zoukankan      html  css  js  c++  java
  • java 访问不同资源方式

    不同类型的资源,需要用不同的方法来访问。

    访问CLASSPATH中的资源

    将资源放在CLASSPATH是最简单的做法。我们只要把所需的资源文件打包到Jar文件中,或是在运行java时,用-classpath参数中指定的路径中。接下来我们就可以用下面的代码来访问这些资源:

    例 5.1. 访问CLASSPATH中的资源

    URL resourceURL = getClassLoader().getResource("java/lang/String.class"); // 取得URL
    InputStream resourceContent = getClassLoader().getResourceAsStream("java/lang/String.class"); // 取得输入流
    访问文件系统中的资源

    下面的代码从文件资源中读取信息:

    例 5.2. 访问文件系统中的资源

    File resourceFile = new File("c:\\test.txt"); // 取得File
    InputStream resourceContent = new FileInputStream(resourceFile); // 取得输入流
    访问Web应用中的资源

    Web应用既可以打包成war文件,也可以展开到任意目录中。因此Web应用中的资源(JSP、模板、图片、Java类、配置文件)不总是可以用文件的方式存取。虽然Servlet API提供了ServletContext.getRealPath()方法,用来取得某个资源的实际文件路径,但该方法很可能返回null —— 这取决于应用服务器的实现,以及Web应用的布署方式。更好的获取WEB应用资源的方法如下:

    例 5.3. 访问Web应用中的资源

    URL resourceURL = servletContext.getResource("/WEB-INF/web.xml"); // 取得URL
    InputStream resourceContent = servletContext.getResourceAsStream("/WEB-INF/web.xml"); // 取得输入流
    访问Jar/Zip文件中的资源

    下面的代码读取被打包在Jar文件中的资源信息:

    例 5.4. 访问Jar/Zip文件中的资源

    URL jarURL = new File(System.getProperty("java.home") + "/lib/rt.jar").toURI().toURL();
    URL resourceURL = new URL("jar:" + jarURL + "!/java/lang/String.class"); // 取得URL
    InputStream resourceContent = resourceURL.openStream(); // 取得输入流
  • 相关阅读:
    CodeForces gym Nasta Rabbara lct
    bzoj 4025 二分图 lct
    CodeForces 785E Anton and Permutation
    bzoj 3669 魔法森林
    模板汇总——快读 fread
    bzoj2049 Cave 洞穴勘测 lct
    bzoj 2002 弹飞绵羊 lct裸题
    HDU 6394 Tree 分块 || lct
    HDU 6364 Ringland
    nyoj221_Tree_subsequent_traversal
  • 原文地址:https://www.cnblogs.com/secbook/p/2655188.html
Copyright © 2011-2022 走看看