zoukankan      html  css  js  c++  java
  • Maven获取resources的文件路径、读取resources的文件

    路径问题一切要看编译后的文件路径

    比如,源文件路径是:

    而编译后的文件路径为:

    也就是说,resources文件夹下的文件在编译后,都是为根目录,这种情况下,比如我要读取resources 文件夹下的 my.txt 文件路径,

    写法①:

    // 编译后,项目根路径,写法1
    String url1 = A.class.getClassLoader().getResource("").toString();
    // 编译后,项目根路径,写法2
    String url2 = A.class.getResource("/").toString();
    // 编译后,文件根路径
    String url3 = A.class.getResource("").toString();

    输出:

    file:/D:/IdeaWorkspace/test-null-project/target/classes/
    file:/D:/IdeaWorkspace/test-null-project/target/classes/
    file:/D:/IdeaWorkspace/test-null-project/target/classes/com/convict/

    写法②:

    // 还有一种getResource 后调用 getFile方法,就没有 [file:],而是以 [/D:xxx] 这样的格式
    String url4 = A.class.getClassLoader().getResource("").getFile();
    String url5 = A.class.getResource("/").getFile();
    String url6 = A.class.getResource("").getFile();
    System.out.println(url4);
    System.out.println(url5);
    System.out.println(url6);

    输出:

    /D:/IdeaWorkspace/test-null-project/target/classes/
    /D:/IdeaWorkspace/test-null-project/target/classes/
    /D:/IdeaWorkspace/test-null-project/target/classes/com/convict/

    写法③:

    String url7 = A.class.getClassLoader().getResource("").getPath();
    String url8 = A.class.getResource("/").getPath();
    String url9 = A.class.getResource("").getPath();
    System.out.println(url7);
    System.out.println(url8);
    System.out.println(url9);

    输出:

    /D:/IdeaWorkspace/test-null-project/target/classes/
    /D:/IdeaWorkspace/test-null-project/target/classes/
    /D:/IdeaWorkspace/test-null-project/target/classes/com/convict/

    至此,上面已经有多种获取文件路径的方式,既然拿到路径,就可以读取File 文件,进而读取文件了,如这是my.txt 的内容

    则读取文件内容的代码可以如下:

    // 获取路径
    String filePath = A.class.getClassLoader().getResource("my.txt").getFile();
    File my = new File(filePath);
    InputStreamReader isr = new InputStreamReader(new FileInputStream(my), StandardCharsets.UTF_8);
    BufferedReader br = new BufferedReader(isr);
    String lineTxt;
    while ((lineTxt = br.readLine()) != null) {
        System.out.println(lineTxt);
    }
    br.close();

    输出:

    扩展

    写法②getFile 跟写法③getPath 是有区别的,getResource 方法后返回的是一个 java.net.URL对象,那手动构造一个java.net.URL

    URL url = new URL("https://www.baidu.com/img/baidu_jgylogo3.gif?param=1111&param2=aaaaa");
    System.out.println("getFile ==> " + url.getFile());
    System.out.println("getPath ==> " + url.getPath());

    输出:

    getFile == > /img/baidu_jgylogo3.gif?param=1111&param2=aaaaa
    getPath ==> /img/baidu_jgylogo3.gif

    可以看出,getFile() 方法可以拿到参数值,而getPath() 就是只取文件名,JDK中文文档相关api如下:

  • 相关阅读:
    范仁义js课程---59、this
    javascript疑难问题---9、闭包执行问题
    jetbrains
    React-Native首次运行提示-ReferenceError-Can-t-find-variable-fbBatchedBridge
    visual studio 2015提示IE10未安装
    【转】在Windows下搭建React Native Android开发环境
    Android Studio 简单设置
    【转】Spring 4.x实现Restful web service
    SecureCRT 终端仿真程序 v7.0.0.326 中文绿色便携破解版
    《Spring技术内幕》学习笔记17——Spring HTTP调用器实现远程调用
  • 原文地址:https://www.cnblogs.com/convict/p/11330449.html
Copyright © 2011-2022 走看看