Java/JavaWeb中讀取資源文件


1、一般工程中使用I/O類指定文件的絕對路徑讀取

FileInputStream fis = new FileInputStream("src/main/resources/zsm.properties");
ppt.load(fis);
String memAddr1 = ppt.getProperty("memAddr1");

 

2、Web工程中可以使用ServletContext或ClassLoader來讀取

  2.1、通過ServletContext來讀取資源文件,文件路徑是相對於web項目(如/JspServletFeature)根路徑而言的。

  2.2、通過ClassLoader來讀取,文件路徑是相對於類目錄而言的(maven工程中一般為/target/classes)

  示例如下

(1)文件位置

  放在src目錄(或其子目錄)下是相對於項目根目錄如JspServletFeature的路徑

  放在JavaResources下是相對於類目錄即classes的目錄

  

(2)代碼

        // 使用servletContext讀取資源文件,相對於web項目的根路徑(即JspServletFeature)
        out.println("\n使用servletContext讀取資源文件,相對於web項目的根路徑(即JspServletFeature):");
        readFileByServletContext(response, "FileReadFile1.properties");
        readFileByServletContext(response, "/FileReadFile1.properties");
        readFileByServletContext(response, "WEB-INF/classes/FileReadFile2.properties");
        readFileByServletContext(response, "/WEB-INF/classes/FileReadFile2.properties");
        readFileByServletContext(response, "WEB-INF/classes/com/zsm/util/FileReadFile3.properties");
        readFileByServletContext(response, "/WEB-INF/classes/com/zsm/util/FileReadFile3.properties");
        // 使用ClassLoader讀取資源文件,相對於類目錄(即classes)
        out.println("\n使用ClassLoader讀取資源文件,相對於類目錄(即classes):");
        readFileByClassLoader(response, "../../FileReadFile1.properties");
        readFileByClassLoader(response, "/../../FileReadFile1.properties");
        readFileByClassLoader(response, "FileReadFile2.properties");
        readFileByClassLoader(response, "/FileReadFile2.properties");
        readFileByClassLoader(response, "com/zsm/util/FileReadFile3.properties");
        readFileByClassLoader(response, "/com/zsm/util/FileReadFile3.properties");

    // 使用servletContext讀取資源文件,相對於web項目的根路徑(即JspServletFeature)
    synchronized void readFileByServletContext(HttpServletResponse response, String filePath) throws IOException {
        InputStream in = this.getServletContext().getResourceAsStream(filePath);
        Properties prop = new Properties();
        prop.load(in);
        String fileName = prop.getProperty("fileName");
        String name = prop.getProperty("name");
        String company = prop.getProperty("company");
        in.close();
        response.getWriter().println(MessageFormat.format("filePath={0},  fileName={1},  name={2},  company={3}",
                filePath, fileName, name, company));
    }

    // 使用ClassLoader讀取資源文件,相對於類目錄(即classes)
    synchronized void readFileByClassLoader(HttpServletResponse response, String filePath) throws IOException {
        // 獲取到裝載當前類的類裝載器
        ClassLoader loader = FileReadServlet.class.getClassLoader();
        InputStream in = loader.getResourceAsStream(filePath);
        Properties prop = new Properties();
        prop.load(in);
        String fileName = prop.getProperty("fileName");
        String name = prop.getProperty("name");
        String company = prop.getProperty("company");
        in.close();
        response.getWriter().println(MessageFormat.format("filePath={0},  fileName={1},  name={2},  company={3}",
                filePath, fileName, name, company));
    }
View Code

(3)結果

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM