精华内容
下载资源
问答
  • java相对路径读取文件
    2021-04-22 20:38:09

    Java相对路径读取文件

    不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。

    项目的文件夹结构:

    repathtest

    ├─src

    │    └─com

    │            └─lavasoft

    │                    ├─test

    │                    └─res

    ├─doc

    1、在Java开发工具的project中使用相对路径

    在project中,相对路径的根目录是project的根文件夹,在此就是repathtest文件夹了。

    创建文件的写法是:

    File f = new File("src/com/lavasoft/res/a.txt");

    File f = new File("doc/b.txt");

    注意:

    路径不以“/”开头;

    脱离了IDE环境,这个写法就是错误的,也并非每个IDE都如此,但我见到的都是这样的。

    2、通过CLASSPATH读取包内文件

    读取包内文件,使用的路径一定是相对的classpath路径,比如a,位于包内,此时可以创建读取a的字节流:

    InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");

    有了字节流,就能读取到文件内容了。

    注意:

    这里必须以“/”开头;

    3、看看完整的测试代码

    package com.lavasoft.test;

    import java.io.*;

    /**

    * Java读取相对路径的文件

    *

    * @author leizhimin 2010-1-15 10:59:43

    */

    public class ReadFile {

    public static void main(String[] args) {

    readTextA_ByClassPath();

    readTextA_ByProjectRelativePath();

    &n

    相关文档:

    [摘要]

    提起Java内部类(Inner

    Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested

    Class),关于这两者的区别与联系,在下文中会有对比。

    [关键字] Java

    内部类

    匿名类

    有人会问,如果内部类里的一个成员变量与外部类的一个成员变量同名,也即外部类的同名成员变量被屏蔽� ......

    Blog from http://forum.xda-developers.com/showthread.php?t=552846

    I've just pushed new Hero Java app into my rogers build and it works fine.

    What you basically need is:

    Jbed.apk (install with adb install)

    libjbedvm.so (adb push /system/lib) - remember to remount as RW.

    I strongly suggest to ......

    您查询的关键词是:newinstance object initargs  。如果打开速度慢,可以尝试快速版;如果想保存快照,可以添加到搜藏。

    (百度和网页http://bbs.iaiai.com/forum/read.php?tid=2690的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。)

    主题 : java的反射 ......

    很多人都知道在swing中加入jPopupMenu组件后可以在鼠标的驱动下探出一个菜单,但是,如果用一般做法,在界面上单击左键也会弹出菜单,那么有没有办法在只有单击右键才弹出菜单呢?其实只是用到了一个小技巧。 你的弹出鼠标菜单鼠标驱动选择 MouseReleased 然后再在监听事件的方法中加入下面的代码就可以了: if(evt.isPop ......

    运行时多态性是面向对象程序设计代码重用的一个最强大机制,动态性的概念也可以被说成“一个接口,多个方法”。Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制,下面就继承和接口实现两方面谈谈java运行时多态性的实现。

    一、通过 ......

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

    不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的。

    项目的文件夹结构:

    repathtest
    ├─src
    │ └─com
    │ └─lavasoft
    │ ├─test
    │ └─res
    ├─doc

    1、在Java开发工具的project中使用相对路径

    在project中,相对路径的根目录是project的根文件夹,在此就是repathtest文件夹了。

    创建文件的写法是:

    File f = new File("src/com/lavasoft/res/a.txt");

    File f = new File("doc/b.txt");

    注意:

    路径不以“/”开头;

    脱离了IDE环境,这个写法就是错误的,也并非每个IDE都如此,但我见到的都是这样的。

    2、通过CLASSPATH读取包内文件

    读取包内文件,使用的路径一定是相对的classpath路径,比如a,位于包内,此时可以创建读取a的字节流:

    InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");

    有了字节流,就能读取到文件内容了。

    注意:

    这里必须以“/”开头;

    3、看看完整的测试代码

    package com.lavasoft.test;
    import java.io.*;
    /**
    * Java读取相对路径的文件
    *
    * @author leizhimin 2010-1-15 10:59:43
    */
    public class ReadFile {
    public static void main(String[] args) {
    readTextA_ByClassPath();
    readTextA_ByProjectRelativePath();
    readTextB_ByProjectRelativePath();
    }
    /**
    * 通过工程相对路径读取(包内)文件,注意不以“/”开头
    */
    public static void readTextA_ByProjectRelativePath() {
    System.out.println("-----------------readTextA_ByProjectRelativePath---------------------");
    File f = new File("src/com/lavasoft/res/a.txt");
    String a = file2String(f, "GBK");
    System.out.println(a);
    }
    /**
    * 通过工程相对路径读取(包外)文件,注意不以“/”开头
    */
    public static void readTextB_ByProjectRelativePath() {
    System.out.println("-----------------readTextB_ByProjectRelativePath---------------------");
    File f = new File("doc/b.txt");
    String b = file2String(f, "GBK");
    System.out.println(b);
    }
    /**
    * 通过CLASSPATH读取包内文件,注意以“/”开头
    */
    public static void readTextA_ByClassPath() {
    System.out.println("-----------------readTextA_ByClassPath---------------------");
    InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");
    String a = stream2String(in, "GBK");
    System.out.println(a);
    }
    /**
    * 文件转换为字符串
    *
    * @param f 文件
    * @param charset 文件的字符集
    * @return 文件内容
    */
    public static String file2String(File f, String charset) {
    String result = null;
    try {
    result = stream2String(new FileInputStream(f), charset);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    return result;
    }
    /**
    * 文件转换为字符串
    *
    * @param in 字节流
    * @param charset 文件的字符集
    * @return 文件内容
    */
    public static String stream2String(InputStream in, String charset) {
    StringBuffer sb = new StringBuffer();
    try {
    Reader r = new InputStreamReader(in, charset);
    int length = 0;
    for (char[] c = new char[1024]; (length = r.read(c)) != -1;) {
    sb.append(c, 0, length);
    }
    r.close();
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return sb.toString();
    }
    }

    (代码写得粗糙,异常没做认真处理)

    运行结果:

    -----------------readTextA_ByClassPath---------------------
    aaaaaaaaa
    sssssssss
    -----------------readTextA_ByProjectRelativePath---------------------
    aaaaaaaaa
    sssssssss
    -----------------readTextB_ByProjectRelativePath---------------------
    bbbbbbbbbbb
    Process finished with exit code 0

    这是通过IDEA开发工具运行的,结果没问题,如果换成控制台执行,那么使用了项目相对路径的读取方式会失败,原因是,此时已经脱离了项目的开发环境,-----这个问题常常困扰着一些菜鸟,代码在开发工具好好的,发布后执行就失败了!

    下面我截个图:

    92cc72347452a8f7428bb565ff3afc8f.png

    5、获取CLASSPATH下文件的绝对路径

    当使用相对路径写入文件时候,就需要用到绝对路径。下面是个例子:

    package com.lavasoft;
    import java.io.File;
    /**
    * CLASSPATH文件的绝对路径获取测试
    *
    * @author leizhimin 2010-1-18 9:33:02
    */
    public class Test {
    //classpath的文件路径
    private static String cp = "/com/lavasoft/cfg/syscfg.properties";
    public static void main(String[] args) {
    //当前类的绝对路径
    System.out.println(Test.class.getResource("/").getFile());
    //指定CLASSPATH文件的绝对路径
    System.out.println(Test.class.getResource(cp).getFile());
    //指定CLASSPATH文件的绝对路径
    File f = new File(Test.class.getResource(cp).getFile());
    System.out.println(f.getPath());
    }
    }

    输出:

    /D:/projects/bbt/code/cdn/planrpt/out/production/planrpt/
    /D:/projects/bbt/code/cdn/planrpt/out/production/planrpt/com/lavasoft/cfg/syscfg.properties
    D:projectsbbtcodecdnplanrptoutproductionplanrptcomlavasoftcfgsyscfg.properties
    Process finished with exit code 0

    总结

    使用工程相对路径是靠不住的。

    使用CLASSPATH路径是可靠的。

    对于程序要读取的文件,尽可能放到CLASSPATH下,这样就能保证在开发和发布时候均正常读取。

    展开全文
  • java中如何使用相对路径读取文件

    千次阅读 2021-03-03 14:07:49
    java中使用相对路径读取文件的方法:1、使用文件【File file = new File(“src/test.txt”)】方法;2、使用类的相对路径;3、使用当前线程的类加载器;4、读取web工程下的文件。【相关学习推荐:java中使用相对路径...

    java中使用相对路径读取文件的方法:1、使用文件【File file = new File(“src/test.txt”)】方法;2、使用类的相对路径;3、使用当前线程的类加载器;4、读取web工程下的文件。

    7a0b16a9ffb1964a24622ad7b063af2f.png

    【相关学习推荐:

    java中使用相对路径读取文件的方法:

    一、简单粗暴的 File file = new File(“src/test.txt”);@Test

    /**

    * 这种方法 “” 空代表的是 这个Java项目 TestSomeTechnology 由于实际项目在打包后没有src目录 所以这种方法不常用

    */

    public void testMethod1() throws IOException{

    File file = new File("src/test.txt");

    BufferedReader br = new BufferedReader(new FileReader(file));

    String len = null;

    while ((len=br.readLine())!=null){

    System.out.println(len);

    }

    }

    二、使用类的相对路径

    TestRelativePath.class.getResource(“/test.txt”).getFile()@Test

    /**

    * 使用类的相对路径

    * 这种方法 “/” 代表的是bin。 src文件夹和resources 文件夹下的的东西都会被加载到bin下面 因为这两个文件被配置为了source

    */

    public void testMethod2() throws IOException{

    File file = new File(TestRelativePath.class.getResource("/test.txt").getFile());

    BufferedReader br = new BufferedReader(new FileReader(file));

    String len = null;

    while ((len=br.readLine())!=null){

    System.out.println(len);

    }

    }

    三、使用当前线程的类加载器

    Thread.currentThread().getContextClassLoader().getResource(“test.txt”).getFile()@Test

    /**

    * 这种是通过当前线程的类加载器

    * 这种方法 “ ” 空代表的是bin 。 于是就直接填写test,文件夹下的的东西都会被加载到bin下面,因为这两个文件被配置为了source

    */

    public void testMethod3() throws IOException{

    File file = new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile());

    BufferedReader br = new BufferedReader(new FileReader(file));

    String len = null;

    if ((len=br.readLine())!=null){

    System.out.println(len);

    }

    }

    四、读取web工程下的文件 使用getRealPath()读取

    目录如下 :

    e165045475143486534ccfbb9bc7ad0f.png

    读取 index.jsp@WebServlet(name = "TestServlet",urlPatterns = "/TestServlet")

    public class TestServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    doGet(request,response);

    }

    /**

    * web工程的根目录是 webRoot, 使用 “/” 代表webroot webroot下面有index.jsp文件

    */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    File file = new File(getServletContext().getRealPath("/index.jsp"));

    BufferedReader br = new BufferedReader(new FileReader(file));

    String len = null;

    while ((len=br.readLine())!=null){

    System.out.println(len);

    }

    }

    }

    读取 test.txt文件

    不过如果想读取test.txt 的话 我们可用用上面的方式File file = new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile());

    也可以使用 getRealPath()

    不过由于是以 webroot为根目录 我们需要从classes里面读:idea的classes等价于esclipse的classpath 。classes说明:

    787ead82f4c5d481919ab65200a04e13.png

    代码:File file = new File(getServletContext().getRealPath("/WEB-INF/classes/test.txt"));

    getResourceAsStream()方法详解

    getResourceAsStream()用法与getResouce()方法一样的,用getResource()取得File文件后,再new FileInputStream(file) 与 getResourceAsStream() 的效果一样。。

    两个代码效果一样InputStream inputStream1 = new FileInputStream(new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile()));

    InputStream inputStream2 = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.txt");

    展开全文
  • Java io流使用相对路径读取文件

    千次阅读 2019-12-08 11:46:05
    前言: 在大多数时候我们会需要Java程序读取某个文件,不采用绝对路径读取文件,而采用相对路径读取。方法如下: 在工程目录下读取文件文件目录: /** * 工程目录下的相对路径读取文件数据 */ public ...

    前言: 在大多数时候我们会需要Java程序读取某个文件,不采用绝对路径读取文件,而采用相对路径读取。方法如下:

    在工程目录下读取文件:

    文件目录:
    在这里插入图片描述

    /**
     * 工程目录下的相对路径读取文件数据
     */
    public void pathIO() throws IOException {
        String filePath = "src/iofile/file.txt";
        String line = "";
        FileReader fileReader = new FileReader(filePath);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        line = bufferedReader.readLine();
        while (line != null){
            line = bufferedReader.readLine();
            System.out.println(line);
        }
    }
    

    控制台
    在这里插入图片描述

    注意: 代码中文件路径“src”是必加的,若使用平常的相对路径,如:“…/iofile/file.txt”等相对路径,程序执行后会报找不到文件路径的错误,所以需加上src等字样。这种方法无论何时都得加一个工程目录,若是在cmd中使用jdk编译运行,岂不是很麻烦嘛?别急,看下一种方法。

    非工程目录下的相对路径读取文件

    这种方法属于取巧的,首先获取文件所在路径,然后依靠一系列的拼接裁剪字符串获得绝对路径,即可。

    代码如下:

    /**
     * 非工程目录下的相对路径获取文件数据
     * @throws IOException
     */
    public void noProcessPath() throws IOException {
        String filePath = getClass().getResource("file.txt").getPath();
        System.out.println("filePath: "+filePath);
        filePath = filePath.substring(1);   //裁剪字符串获得正确路径
        System.out.println("filePath: " + filePath);
        FileReader fileReader = new FileReader(filePath);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        String line = bufferedReader.readLine();
        while (line != null){
            line = bufferedReader.readLine();
            System.out.println(line);
        }
    }
    

    控制台:

    在这里插入图片描述
    总结:
    至此,这篇笔记到此结束。


    北京市需要租房或者转租房子,找舍友合租的都可以关注这个公众号哦,可帮忙发布房源信息,上面也有uu发布的转租信息呢。
    请添加图片描述
    在这里插入图片描述

    展开全文
  • java如何通过绝对路径和相对路径读取文件

    万次阅读 多人点赞 2018-05-29 19:24:20
    0x00 前言 当我在写java的数据库连接时,希望通过使用文件相对路径来读取信息,因为使用绝对路径时在代码移植之后就会出现问题,这不是一个好的方法 0x01 概念 ...0x02 java通过绝对路径读取文件 ...
  • java相对路径读取文件

    2017-06-18 23:44:22
    java读取文件相对路径问题
  • 读取文件的写法,相对路径在当前的目录结构中读取test.txt的有三种写法 File file = new File("src/test.txt"); File file = new File(TestRelativePath.class.getResource("/test.txt").getFile()); File file = ...
  • https://blog.csdn.net/my__sun_/article/details/74450241读取文件的写法,相对路径在当前的目录结构中读取test.txt的有四种写法简单粗暴的 File file = new File(“src/test.txt”)使用类的相对路径使用当前线程的...
  • 今天小编就为大家分享一篇浅谈java文件读取File、以及相对路径的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • //不推荐使用获取工程的根路径 (2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用 (3)、request.getSession().getServletContext().getRealPath...
  • java 使用相对路径读取文件

    千次阅读 2019-05-30 11:11:49
    java 使用相对路径读取文件 1.java project环境,使用java.io用相对路径读取文件的例子: *目录结构: DecisionTree |___src |___com.decisiontree.SamplesReader.java |___resource ...
  • 精选文库 PAGE PAGE 3 1.java project环境使用java.io用相对路径读取文件的例子 *目录结构 ? DecisionTree ? |_src ? |_com.decisiontree.SamplesReader.java ? |_resource ? |_train.txt,test.txt *SamplesReader....
  • Java中用File对象来创建文件时,绝对路径一般是不会出现什么问题的,如果使用相对路径,则有可能出现意向不到的问题,以下主要是针对相对路径进行解释1、Eclipse下的Java Project环境目录结构如下所示:...
  • 展开全部1、在Java开发e69da5e887aa3231313335323631343130323136353331333337396166工具的project中使用相对路径在project中,相对路径的根目录是project的根文件夹,在此就是repathtest文件夹了。创建文件的写法是...
  • Java获取相对路径文件

    千次阅读 2021-10-11 17:03:20
    class.getResourceAsStream("")获得的是相对路径 class.getClassLoader().getResourceAsStream("")加载器获得是绝对路径 Class.getResourceAsStream(String path) : (1)不以 “/” 开头时,默认是从此类所在的包...
  • 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...
  • // (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...
  • 1. 绝对路径的方式读取文件 这个很简单,就是用大家熟悉的File类加载文件,然后用输入流读取文件内容就可以了。 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import ...
  • 文件读取使用相对路径读取项目下resources下的文件: /** * 读取相对路径文件 * 注意:相对路径的文件必须要在resources下创建文件夹 */ public static List<String> readFileByLine(String file) throws ...
  • Java相对路径总结

    2021-03-04 00:53:31
    1.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的...相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录。和物理...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 104,994
精华内容 41,997
关键字:

java相对路径读取文件