Java中獲取資源文件的方法總結
阿新 • • 發佈:2017-06-03
tco doget 技術 resource images 磁盤 response linux exception
這裏總結3中方法獲取資源文件的
- ServletContext
- Class
- ClassLoader
文件的位置
1. ServletContext
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter pw = response.getWriter(); ServletContext context = this.getServletContext(); /** * 獲取不同路徑下的資源文件 * servletContext是相對於項目的根目錄的,這裏為WebContent */ InputStream inputA = context.getResourceAsStream("/a.txt"); InputStream inputB = context.getResourceAsStream("/WEB-INF/classes/cn/zydev/b.txt"); InputStream inputC = context.getResourceAsStream("/WEB-INF/classes/c.txt"); /** * 獲取真實的磁盤路徑 */ String realPath = context.getRealPath("/WEB-INF/classes/c.txt"); /** * 獲取指定目錄下的文件(包括目錄,深度為1級) */ Set<String> rsc = context.getResourcePaths("/WEB-INF"); String a = IOUtils.toString(inputA); String b = IOUtils.toString(inputB); String c = IOUtils.toString(inputC); pw.print(a+"<br/>"); pw.print(b+"<br/>"); pw.print(c+"<br/>"); pw.print(realPath+"<br/>"); pw.println(rsc); }
結果顯示:
2. ClassLoader
使用ClassLoader是相對於classes的
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter pw = response.getWriter(); /** * ClassLoader是相對於classes參照的 * 第一個斜杠可以不寫,也可以寫成./(熟悉Linux的應該很清楚) */ ClassLoader cl = this.getClass().getClassLoader(); InputStream inputA = cl.getResourceAsStream("/../../a.txt"); InputStream inputB = cl.getResourceAsStream("/cn/zydev/b.txt"); InputStream inputC = cl.getResourceAsStream("/c.txt"); String a = IOUtils.toString(inputA); String b = IOUtils.toString(inputB); String c = IOUtils.toString(inputC); pw.print(a+"<br/>"); pw.print(b+"<br/>"); pw.print(c+"<br/>"); }
得到結果:
3. class
路徑前斜杠表示相對於當前的class,不加斜杠相對於classes
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter pw = response.getWriter(); Class cs = this.getClass(); //不加斜杠表示相對於class(CServlet) InputStream inputA = cs.getResourceAsStream("../../../../a.txt"); InputStream inputB = cs.getResourceAsStream("b.txt"); //加斜杠,相對於classes InputStream inputC = cs.getResourceAsStream("/c.txt"); String a = IOUtils.toString(inputA); String b = IOUtils.toString(inputB); String c = IOUtils.toString(inputC); pw.print(a+"<br/>"); pw.print(b+"<br/>"); pw.print(c+"<br/>"); }
得到結果:
Java中獲取資源文件的方法總結