读取资源文件

来源:互联网 发布:winpe数据恢复版 编辑:程序博客网 时间:2024/05/21 14:51

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

  1. 创建配置文件   properties

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

  3. 然后用我们以前学过的Properties来对文件中的键值(会用到load(InputStream inStream)StringgetProperty(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);*/

  • 方式二
    通过StringgetRealPath(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手册)

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

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

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

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

  • Ex

    publicclassClassLoaderDemo {

         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
原创粉丝点击