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

        

  • 相关阅读:
    为系统添加语言包
    除掉任务栏上的隐藏小按钮
    叠加多个无线网络
    在win7中通过手机投放媒体
    开关WI-Fi显示列表
    hibernate(二)对象的三种状态、一级缓存、多对一、inverse、cascade
    hibernate(一)helloworld、api、事务、配置文件、映射文件
    SQL Server2019安装
    Windows server2012搭建FTP服务器
    Gradle的使用教程
  • 原文地址:https://www.cnblogs.com/zad27/p/11204702.html
Copyright © 2011-2022 走看看