读取资源文件


一     首先要在webroot下边创建一个文件夹file,然后再file中创建一个p.properties文件
  • 方式一:

  1. 创建配置文件    properties

  2. 利用 InputStream  getResourceAsStream(String path)(注意这里的path应该是发布后的如/WEB-INF/classes)获得一个输入流,是相对于web应用的根目录

  3. 然后用我们以前学过的Properties来对文件中的键值(会用到load(InputStream inStream)String getProperty(String key)

    Ex

    //第一种方式

             /*Properties pro =  new Properties();

             pro.load(this.getServletContext().getResourceAsStream("/file/p.poperties"));

             String name =pro.getProperty("name");

             String address =pro.getProperty("address");

             response.getWriter().print(name+":"+address);*/

  • 方式二
    通过String getRealPath(String path)方法可以通过相对路径获得绝对路径,然后就可以同输入流来读资源。(直接使用输入流是不可以的,因为其相对的路径是jdkbin目录

  • Ex

    //第二种方式

             /*Stringpath = this.getServletContext().getRealPath("/file/p.poperties");

             Properties pro=  new Properties();

             pro.load(newFileInputStream(path));

             String name =pro.getProperty("name");

             String address =pro.getProperty("address");

             response.getWriter().print(name+"::"+address);*/

        

  • 普通的java类怎么来读取外部文件

那就只有用类装载器(ClassLoader)(查阅javase手册)

    • InputStream getResourceAsStream(String path)(这里的path是相对于classes文件夹)(不可以取得实时更新的内容

      InputStream in =ServletDemo4.class.getClassLoader().getResourceAsStream("pro.properties");

  • URL getResource(String name) (可以取得实时更新的内容)

    String path = ServletDemo4.class.getClassLoader().getResource("pro.properties").getPath();

  • Ex

    public classClassLoaderDemo {

          public Stringload() throws IOException{

          //这种方式不会自动更新(因为是类加载器加载的所以只加载一次)

          //InputStream in =ClassLoaderDemo.class.getClassLoader().getResourceAsStream("/cn/java/p.poperties");

          //这种方式可以自动更新(此方法是得到绝对路径后在创建输出流)

          InputStream in = newFileInputStream(ClassLoaderDemo.class.getClassLoader().getResource("/cn/java/p.poperties").getPath());

    //这种方式就是访问的webrootfile中的p.poperties

          //InputStream in = new FileInputStream(ClassLoaderDemo.class.getClassLoader().getResource("../../file/p.poperties").getPath());

          Properties p = newProperties();

          p.load(in);

          String name = p.getProperty("name");

          String address = p.getProperty("address");

          return name+"::"+address;

          }

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值