• java 路径的问题


    在项目开发中会碰到各种各样的获取项目路径的一些问题:

    1:java项目:

      以获取  类路径下的mess.properties 为例来说明;

    文件在项目中的位置:

       src/bz/beppe/demo/resource/mess.properties

    1) 通过新建File文件获取其文件所在的路径:

    File f=new File("bin/resource/mess.properties");
            InputStream in=new FileInputStream(f);

    这里获取到的路径地址是:

    D:DMCworkspaceJavaSEin esourcemess.properties

    bin/  下的地址表示获取项目编译后在bin目录下面的路径

    2)通过 "." 的方式获取项目的当前所在的路径:

    File f3=new File(".");
    System.out.println(f3.getCanonicalPath());

    这里获取到的路径是:

    D:DMCworkspaceJavaSE   即项目所在的路径

    3)通过类加载器的方式获取:查找指定资源的url   这里指定资源需要以‘/’开头

    URL resource = this.getClass().getResource("/resource/mess.properties");
    System.out.println(resource.getFile());

    这里获取到的路径是:/D:/DMCworkspace/JavaSE/bin/resource/mess.properties

    这里的路径不是以盘符开始的,/D:/DMCworkspace/JavaSE   指定的是java project所在位置,和相应的盘符没有关系;

    2:javaweb项目中的获取当前应用的路径:

    根目录所对应的绝对路径:request.getServletPath();
    文件的绝对路径 :request.getSession().getServletContext().getRealPath(request.getRequestURI())
    当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");

    3:有一种很特殊的情况,就是获取jar中的文件的路径:

    当一个项目你用 new File("xxx")的方式获取文件的路径是没问题的,而当你将该项目打成jar包后放入其他项目中则会报错:FileNotFound 的错误

     这是因为这种方式获取到路劲是与盘符和项目所在的目录紧密相关的,在jar包是一个文件没有其中没有java 项目的目录概念,所以获取到的是错误的路劲;

    这时候如果要获取jar中的路径则可以通过类加载器的方式来获取其中的路径从而加载文件;

    这里以读取jar包中的mess.properties文件为例;

    InputStream is = this.getClass().getResourceAsStream("/mess.properties");
  • 相关阅读:
    MYSQL InnoDB二级索引存储主键值而不是存储行指针的优点与缺点
    公众号 苹果端点击事件委托不起作用而安卓可以
    php emoji表情转换
    PHP 获取网页所有链接
    node 一行一行的读取文件
    AsyncJS 异步流程控制DEMO详细介绍
    node.js 获取异步方法里面数据 的方式
    利用blob 加密防下载
    html css 3D轮播图
    transform和transition组合动画错误问题
  • 原文地址:https://www.cnblogs.com/beppezhang/p/6519454.html
Copyright © 2020-2023  润新知