关于文件路径的Java代码笔记

!!! note 目录

关于文件路径的Java代码笔记

一、绝对路径和相对路径

  • 绝对路径:指文件的完整路径,从根目录开始。

    1
    2
    FileInputStream in = new FileInputStream("E:\\powernode\\02-JavaSE\\code\\file.txt");
    FileInputStream in = new FileInputStream("E:/powernode/02-JavaSE/code/file.txt");
    • 这种路径在任何地方都能找到对应的文件,但是不够灵活,不适合移植性较高的项目。
  • 相对路径:相对于当前执行环境的路径。

    1
    FileInputStream in = new FileInputStream("log");
    • 在IDEA工具中,默认的当前路径是项目的根目录。

    • 在代码中,如果需要使用相对路径,要了解当前的工作目录。在IDEA中,默认是项目的根目录。

      1
      FileInputStream in = new FileInputStream("chapter08/src/log2");

二、类路径中加载资源

  • 类路径:包含所有编译后的类文件和资源文件的路径。通常在项目的 src 目录或 resources 目录下。

  • 通过类加载器加载资源

    1
    String path = Thread.currentThread().getContextClassLoader().getResource("test/file").getPath();
    • Thread.currentThread():获取当前线程。

    • getContextClassLoader():获取当前线程的上下文类加载器。

    • getResource("路径"):从类路径的根目录开始,加载指定路径的资源。

    • 优点

      • 通用性强:适合系统移植,在不同环境下都可以使用相同的路径方式。
      • 自动从类路径根目录加载资源,适应性强。
    • 缺点

      • 资源必须在类路径中。如果资源不在类路径中,这种方式无法加载资源。
    • 示例:

      1
      2
      3
      4
      String path = Thread.currentThread().getContextClassLoader().getResource("test/file").getPath();
      System.out.println(path);

      FileInputStream in = new FileInputStream(path);

三、注意事项

  • 使用类路径加载资源时,需要确保资源在类路径中。
  • 在IDEA等开发工具中,相对路径是从项目的根目录开始的。
  • getResource 方法返回的是 URL 对象,调用 getPath() 方法可以获取资源的路径字符串。