精华内容
下载资源
问答
  • Java中File类的构造函数需要我们传入一个pathname,当我们传入以"/"开头的pathname表示绝对路径,其他均表示相对路径。一:绝对路径名:是完整的路径名,不需要任何其他信息就可以定位它所表示的文件绝对路径表示从...

    Java中File类的构造函数需要我们传入一个pathname,当我们传入以"/"开头的pathname表示绝对路径,其他均表示相对路径。

    一:绝对路径名:是完整的路径名,不需要任何其他信息就可以定位它所表示的文件绝对路径表示从根目录定位文件位置,不需要参照其他文件路径,win中从某个分区磁盘如"e://"开始定位,linux表示从根目录"/"开始定位。

    二:相对路径:相对路径名必须使用取自其他路径名的信息进行解释。java.io 包中的类总是根据当前用户目录来解析相对路径名。此目录可以通过System.getProperty("user.dir");获取。通常是 Java 虚拟机的调用目录。比如我们有个Test类

    public class Test {

    public static void main(String[] args) {

    System.out.println(System.getProperty("user.dir"));

    }

    }

    当我们将Test.class移动到E:\a路径下执行,输出为:"E:\a",

    我们在Eclipse创建项目FilePathTest(路径-->E:\WorkSpace\FilePathTest),并创建如上Test类,结构如下:--a.txt

    FilePathTest--src--com--Test.java--a.txt--bin--com--Test.class

    --a.txt

    则此时运行Test输出为"E:\WorkSpace\FilePathTest",也就是相对的目录为项目目录。如果此时需要在Test类中获取项目a.txt文件需要如下使用

    File f = new File("bin/a.txt");

    三、使用ClassLoader、Class读取配置文件

    jvm通过类加载器加载类,我们可以通过类加载器的加载的目录作为相对目录用来读取文件,类加载器提供了

    publicURL getResource(String name)public InputStream getResourceAsStream(String name)

    通常使用方式为:Test.class.getClassLoader().getResource("");

    Class也提供相同的方法,只不过class相对的目录为"类加载器相对的目录/类的package";

    特别注意:当我们需要将项目打包成jar,此时如果使用getResource()读取jar中的配置文件,此时返回的URL格式为jar中特有格式file:\E\Test.jar!\a.txt,这种格式作为File()的路径名是不会被识别的,所以如果我们需要读取jar中的文件则需要使用getResourceAsStream(""),直接获取输入流进行操作。

    mmse4j-core-1.9.1.jar中的Dictionary就是因为使用getResource()读取同一个jar中的字典数据(Dictionary.getDefalutPath())才会找不到文件而报错,代码如下:

    URL url = Dictionary.class.getClassLoader().getResource("data");

    File defalutPath= new File(defPath);

    展开全文
  • 浅谈java文件读取File、以及相对路径的问题发布于 2020-3-9|复制链接分享一篇关于浅谈java文件读取File、以及相对路径的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小妖过来看看吧一、对于...

    浅谈java 中文件的读取File、以及相对路径的问题

    发布于 2020-3-9|

    复制链接

    分享一篇关于浅谈java 中文件的读取File、以及相对路径的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小妖过来看看吧

    一、对于java项目中文件的读取1、使用System 或是 系统的Properties对象①直接是使用 String relativelyPath=System.getProperty("user.dir");②使用Properties对象我们先来遍历一下系统的属性:

    ```java

    Properties properties = System.getProperties();

    Enumeration pnames = properties.propertyNames();

    while (pnames.hasMoreElements()) {

    String pname = (String) pnames.nextElement();

    System.out.print(pname + "--------------");

    System.out.println(properties.getProperty(pname));

    }

    ```

    这是系统的属性,由此其实还是绕到使用 user.dir 属性来取得当前项目的真是路径通过 String relativelyPath = properties.getProperty("user.dir"); 取得我自己的电脑上面的项目 Log4jProj 的真是路径是 :user.dir--------------D:\Develop\workspace\ws_self\10_ws_eclipse_j2ee_mars\Log4jProj其实方式①和方式②一个意思,殊途同归2、第二种方式:使用当前类的类加载器进行获取 ClassLoader首先来回顾一下,如何获取Class字节码实例,三种方式:(比如我的类叫Demo)① Demo.class② Class.forName("类的全称")③ 利用Demo的实例对象,调用对象的getClass()方法获取该对象的Class实例回顾了如何获取Class字节码实例之后,然后再来回顾一下,如何获取ClassLoader对象① Demo.class.getClassLoader()② Class.forName("类的全称").getClassLoader()③ 假设demo为Demo的实例化对象 demo.getClass().getClassLoader()④ 通过Thread对象的getContextClassLoader() 方法来获取Thread.currentThread().getContextClassLoader()进入正题:有了ClassLoader对象之后,我们这么时候通过ClassLoader对象来获取java项目中的文件首先让大家看下我当前的项目目录结构以及实际文件的目录结构需求就是,此时Test需要读取 log4j.properties 文件的路径用到ClassLoader的两个方法,一个是静态的一个非静态的输出结果:记住哦,这里的getSystemResource方法获取的是URL对象,需要调用getPath()方法获取路径1、当只是获取 log4j.properties 文件输入流的时候可以通过以下两种方式① 依然是使用 ClassLoader, 其中有两个方法,两者一个是静态一个非静态

    ```java

    ClassLoader.getSystemResourceAsStream("config/log4j.properties");

    Thread.currentThread().getContextClassLoader().getResourceAsStream("config/log4j.properties");

    ```

    ② 先通过File文件包装之后,然后新建一个输入流

    ```java

    File file01 = new File("config/log4j.properties");

    System.out.println(file01.getAbsolutePath());

    File file02 = new File(properties.getProperty("user.dir") + "/bin/config/log4j.properties");

    System.out.println(file02.getAbsolutePath());

    //ClassLoader.getSystemResource获取的是URL对象

    File file03 = new File(ClassLoader.getSystemResource("config/log4j.properties").getPath());

    System.out.println(file03.getAbsolutePath());

    ```

    展开全文
  • Java读取相对路径文件

    2017-11-14 22:15:00
    Java读取相对路径文件是的前提也是相对的:文件必须位于classpath下面,否则随便一个相对文件是没法读取的。 用IDE创建一个工程,一般都会有一个src的目录,这个src就是工程的classpath目录了,只要在src目录或其子...
    Java读取相对路径文件是的前提也是相对的:文件必须位于classpath下面,否则随便一个相对文件是没法读取的。
     
    用IDE创建一个工程,一般都会有一个src的目录,这个src就是工程的classpath目录了,只要在src目录或其子目录下的文件,在程序代码中都可以使用相对路径的方式来读取,这里的相对路径和文件系统的相对路径概念上也许有点差异。
     
    举例来说:
    public class TestRead { 

            public static String genWscmd(String xmlfilename) { 
                    InputStream in = TestRead.class.getClassLoader().getResourceAsStream(xmlfilename); 
                    String x = StringFileToolkit.file2String(in, "UTF-8"); 
                    return x; 
            } 

            public static void main(String[] args) { 
                    String out = genWscmd("sys_ds.xml"); 
                    System.out.println(out); 
            } 
    }
     
    1、sys_ds.xml位于src下,路径直接写其名字。但千万别写成“/sys_ds.xml”了,这是错误的,会被认为是绝对路径。
     
    2、将文件sys_ds.xml移动到mypack包下面,则路径应该写为:mypack/sys_ds.xml,前面还是没有“/”,这点要注意。
     
    3、必须通过ClassLoader来执行getResourceAsStream()方法。获取ClassLoader有两种方式:
            InputStream in = TestRead.class.getClassLoader().getResourceAsStream(xmlfilename);

            InputStream in = new TestRead().getClass().getClassLoader().getResourceAsStream(xmlfilename);
     
    4、将一个流转换为字符串的实现如下:
     
            /** 
             * 读取输入流为一个内存字符串,保持文件原有的换行格式 
             * 
             * @param in            输入流 
             * @param charset 文件字符集编码 
             * @return 文件内容的字符串 
             */
     
            public static String file2String(InputStream in, String charset) { 
                    StringBuffer sb = new StringBuffer(); 
                    try { 
                            LineNumberReader reader = new LineNumberReader(new BufferedReader(new InputStreamReader(in, charset))); 
                            String line; 
                            while ((line = reader.readLine()) != null) { 
                                    sb.append(line).append(System.getProperty("line.separator")); 
                            } 
                            reader.close();                         
                    } catch (UnsupportedEncodingException e) { 
                            log.error("读取文件为一个内存字符串失败,失败原因是使用了不支持的字符编码" + charset, e); 
                    } catch (IOException e) { 
                            log.error("读取文件为一个内存字符串失败,失败原因是读取文件异常!", e); 
                    } 
                    return sb.toString(); 
            } 
     
     
    上面的执行结果是:


    本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/188193,如需转载请自行联系原作者
    展开全文
  • (转载) 1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)... 相对路径:相对与某java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.pro...

    (转载) 1.基本概念的理解   绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:\xyz\test.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个 URL绝对路径。   相对路径:相对与某

    java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties

    文件中,可以用"#"来作注释,properties文件在Java编程中用到的地方很多,操作很方便。

    一、properties文件

    test.properties

    #################################

    #   Socket服务器端配置文件#

    #   日期:2012年7月25日 #

    #################################

    #

    #   说明:存放socket服务器端IP和端口

    #

    #   xxx的ip

    xxx.server.ip=192.168.154.168

    #   xxx的的端口

    xxx.server.port=8888

    import java.io.BufferedInputStream;

    import java.io.FileInputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.util.*;在编写《资料收集库》的网页收集助手过程中,需要用到分析HTML的源代码,并把相对路径转换成绝对路径,以下载相关的资源,于是有了下面的算法,可能效率不够高,但就我的使用是够了,如果您有更好的,共享一下给大家吧,谢谢。 [CODE] //说明一下变量:m_Str

    二、操作properties文件的java方法

    //读文件信息

    import java.io.BufferedInputStream;

    import java.io.FileInputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.util.*;

    public class PropertiesTest {

    public static void main(String args[]) throws IOException {

    Properties pro = new Properties();

    InputStream in = new BufferedInputStream(new FileInputStream(

    "./IP_Port.properties"));//./代表当前目录即工程的根目录

    pro.load(in);

    Enumeration en = pro.propertyNames();

    while (en.hasMoreElements()) {

    String key = (String) en.nextElement();

    String Property = pro.getProperty(key);

    System.out.println(key + "=" + Property);

    }

    }

    }

    展开全文
  • 不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。项目的文件夹结构:repathtest├─src│ └─com│ └─...
  • Java相对路径读取文件不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。项目的文件夹结构:repathtest├─src│└...
  • java读取相对路径文件

    2015-11-18 18:41:14
    java读取相对路径文件 项目的文件夹结构: repathtest  ├─src  │ └─com  │ └─lavasoft  │ ├─test  │ └─res  ├─doc 1、在Java开发工具的project中使用相对路径 在...
  • 最近遇到在java代码中读取自带文件,只知道可以采用getResourceAsStream,但对具体细节了解不甚...文件和java文件相对位置,各个properties文件   同时,在依赖的第三方包中还有文件       ...
  • 核心提示:Java读取相对路径文件是的前提也是相对的:文件必须位于classpath下面,否则随便一个相对文件是没法读取的。Java读取相对路径文件是的前提也是相对的:文件必须位于classpath下面,否则随便一个相对文件是...
  • * 读取相对路径文件 * 注意:相对路径的文件必须要在resources下创建文件夹 */ public static List<String> readFileByLine(String file) throws IOException { ArrayList<String> arrayList = new...
  • 一、对于java项目中文件读取1、使用System 或是 系统的Properties对象①直接是使用 String relativelyPath=System.getProperty("user.dir");②使用Properties对象我们先来遍历一下系统的属性:Properties ...
  • 获取CLASSPATH下文件的绝对路径当使用相对路径写入文件时候,就需要用到绝对路径。下面是个例子:package com.lavasoft;import java.io.File;/*** CLASSPATH文件的绝对路径获取测试**/public class Test {//...
  • https://blog.csdn.net/my__sun_/article/details/74450241读取文件的写法,相对路径在当前的目录结构中读取test.txt的有四种写法简单粗暴的 File file = new File(“src/test.txt”)使用类的相对路径使用当前线程的...
  • // (Class文件所在路径)file:/F:/share/JavaProject/NC_HUAXIN_SALE/out/public/ System.out.println(new File("/").getAbsolutePath()); // D:\ System.out.println(System.getProperty("user.dir")); // D:\fsoft...
  • 不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。项目的文件夹结构:repathtest├─src│└─com│└─lavasoft...
  • Java相对路径读取文件不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。项目的文件夹结构:repathtest├─src│└...
  • 项目中读取文件直接写相对路径。 例如:File file = new File("config/bankins/bank_0005_realtime.ini"); 启动报FileNotFoundException异常。 项目结构: project └src ...java读取相对路径文件时,...
  • 核心提示:Java读取相对路径文件是的前提也是相对的:文件必须位于classpath下面,否则随便一个相对文件是没法读取的。Java读取相对路径文件是的前提也是相对的:文件必须位于classpath下面,否则随便一个相对文件是...
  • Java中File类的构造函数需要我们传入一个pathname,当我们传入以"/"开头的pathname表示绝对路径,其他均表示相对路径。一:绝对路径名:是完整的路径名,不需要任何其他信息就可以定位它所表示的文件绝对路径表示从...
  • Java FileReader使用相对路径读取文件

    千次阅读 2018-11-15 14:47:28
    Java FileReader使用相对路径读取文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 在进行编程时需要时常更换主机进行测试,如果使用绝对路径则需要经常更改,为此使用相对路径是一个不错的选择。但是使用./,../...
  • JAVA开发中,免不了要读文件操作,那么JAVA开发读取文件的方法有哪些呢?读取文件首先就需要获取文件的路径。而路径分为绝对路径和相对路径。在文件系统中,绝对路径都是以盘符开始的,例如C:abc1.txt。什么是相对路径呢?...
  • Java读取相对路径文件是的前提也是相对的:文件必须位于classpath下面,否则随便一个相对文件是没法读取的。 用IDE创建一个工程,一般都会有一个src的目录,这个src就是工程的classpath目录了,只要在src目录或其子...
  • java相对路径读取文件

    2017-06-18 23:44:22
    java读取文件相对路径问题
  • 不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。项目的文件夹结构:repathtest ├─src │ └─com │ └─...
  • //不推荐使用获取工程的根路径 (2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用 (3)、request.getSession().getServletContext().getRealPath...
  • 给大家截个图:这是系统的属性,由此其实还是绕到使用user.dir 属性来取得当前项目的真是路径通过StringrelativelyPath = properties.getProperty("user.dir");取得我自己的电脑上面的项目Log4jProj 的真是路径是 :...
  • Exception in thread "main" java.io.FileNotFoundException: scores.txt (系统找不到指定的文件。) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(Unknown Source) at java.io...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 885
精华内容 354
关键字:

java文件读取相对路径

java 订阅