zoukankan      html  css  js  c++  java
  • Java resource 读取解释,绝对路径和相对路径

    java如何加载资源?

    Java 从环境中读取资源,在多数情况下,java直接在Classpath下检索jar. 因为加载资源和代码运行位置无关,java中的资源加载被称为location independent,java仅需要正确的环境即可找到资源.

    绝对路径和相对路径

    资源的引用都是使用资源名: getResourceAsStream("/path/resource.xml");

    其中"/path/resource.xml"就是资源名;

    资源名可以:

    • 绝对路径,例如"/path/resource.xml"; 以''/''开头即为绝对路径

    • 相对路径,例如"path/resource.xml";

    相对路径是指,相对于方法被调用的位置,路径会拼接,而绝对路径则会将/移除后直接使用

    package my.location;

    class ResourceFinder {
    ...
    public void findResources(){
      InputStream stream1 =
    getClass().getResourceAsStream("/path/resource.xml");
      InputStream stream2 =
    getClass().getResourceAsStream("path/resource.xml");
    }
    ...
    }
    • stream1获取资源的路径为path/resource.xml

    • stream2获取资源路径为my/location/path/resource.xml

    ClassLoader 和Class对文件名的不同处理

    ClassLoader.getResource()Class.getResource() 工作方式不同

    ClassLoader 直接使用给定string作为资源名而不使用绝对路径/相对路径的转换,因此string不能以/开头

    package my.location;

    class ResourceFinder {
    ...
    public void findResources(){
      InputStream stream1 =
    getClass().getResourceAsStream("/path/resource.xml");
      InputStream stream2 =
    getClass().getResourceAsStream("path/resource.xml");
      InputStream stream3 =
    getClass().getClassLoader().getResourceAsStream("path/resource.xml");
      InputStream stream4 =
    getClass().getClassLoader().getResourceAsStream("/path/resource.xml");

    }
    ...
    }

    stream3的文件路径为 path/resource.xml,而stream4的路径是非法的

    参考文献:

    http://www.thinkplexx.com/learn/howto/java/system/java-resource-loading-explained-absolute-and-relative-names-difference-between-classloader-and-class-resource-loading

        

  • 相关阅读:
    Centos下安装Redis
    BZOJ 4870 [Shoi2017]组合数问题 ——动态规划 矩阵乘法
    BZOJ 4868 [Shoi2017]期末考试 ——三分 枚举
    BZOJ 4584 [Apio2016]赛艇 ——动态规划
    BZOJ 2806 [Ctsc2012]Cheat ——后缀自动机 单调队列优化DP
    BZOJ 2330 [SCOI2011]糖果 ——差分约束系统 SPFA
    Topcoder SRMCards ——贪心
    CTSC 1999 家园 【网络流24题】星际转移
    BZOJ 3489 A simple rmq problem ——KD-Tree
    BZOJ 2733 [HNOI2012]永无乡 ——线段树 并查集
  • 原文地址:https://www.cnblogs.com/zad27/p/11204702.html
Copyright © 2011-2022 走看看