Javaリソースファイルパスの詳細(getResource)(整理版)

4732 ワード

総説
           :
  `getResourceAsStream ()    inputstream
   getResource()  :URL
   Class.getResource("")          Class           
   Class.getResource("/")     classpath   
   getClassLoader().getResource("")      classpath   
   getClassLoader().getResource("/")     !!` 

Class.getResourceAsStreamとClassLoader.getResourceAsStreamは同じです.classpathからのリソース読み取りに使用できます.classpathにはclasspathのパスとclasspathのjarが含まれています.異なる:リソースの定義は異なり、1つは主に1つのobjectに対してリソースを取得するために使用され、もう1つはclasspathに対してリソースを取得するために使用され、絶対パスが使用されます.Class.getResourceAsStreamを使用する場合、リソースパスには2つの方法があります.1つは/で始まると、このようなパスは絶対パスを指定し、/でないと、パスはこのclassが存在するパッケージに相対的になります.ClassLoader.getResourceAsStreamを使用する場合、パスはclasspathに対する絶対パスを直接使用します.たとえば、次の3つの文は、実際の結果は同じcom.explorers.Test.class.getResourceAsStream("abc.jpg")
com.explorers.Test.class.getResourceAsStream("/com/explorers/abc.jpg")
ClassLoader.getResourceAsStream("com/explorers/abc.jpg")
です.
普段、プログラムを书いているときに、ヒントファイルが见つからないことが多いので、异常を投げ出してしまいました.
相対パスの取得説明:相対パス(すなわち、誰に対しても明記しない)は、Javaプロジェクトにおけるファイルが、プロジェクトのルートディレクトリであるウェブプロジェクトにおけるファイルパスに対して、異なるウェブサーバによって異なる(tomcatはtomcatインストールディレクトリbinに対して)
2種類のロードディレクトリの取得(すなわち、実行時にあるクラスが取得されたときにロードディレクトリを取得する)1)一般的な方法1(一般的なjavaプロジェクトでもwebプロジェクトでも、パケットパスが見える第1級ディレクトリにナビゲートする)
    InputStream is=TestAction.class.getClassLoader().getResourceAsStream("test.txt");
    (test.txt          \src\test.txt; TestAction           src   ) 

        TestAction,test.txt                  
  2)      (    1      ,          '/'  ) 
     InputStream is=Test1.class.getResourceAsStream("/test.txt"); 
     (test.txt          \src\test.txt, Test1           src   )

3つのウェブプロジェクトルートディレクトリの取得(パブリッシュ後)1 servletから1つのservletを確立し、そのinitメソッドに次の文String relativelyPath=System.getProperty("user.dir");を書き込む.D:ツールTomcat-6.0webapps002_ext(002_extはプロジェクト名)s 1.getRealPath(")が呼び出された場合、D:ツールTomcat-6.0webapps002_ext(1つ足りない")が出力される.2 httpServiceletRequestからServletContext s1=this.getServletContext();
String temp=s1.getRealPath("/"); ( )
結果:D:ツールTomcat-6.0webapps002_ext
四classpathの取得(Eclipseではsrcまたはclassesディレクトリを取得するためのパス)方法1 String cp11111=request.getSession().getServletContext().getRealPath("/");eg:Thread.currentThread().getContextClassLoader().getResource("").getPath()出力:t—/E:/order/002_ext/WebRoot/WEB-INF/classes/
方法2
Stringt=Thread.currentThread().getContextClassLoader().getResource("").getPath();
System.out.println("t---"+t);
(JdomParseはsrcのあるパッケージのクラスであり、以下同じ)eg:JdomParse.class.getClassLoader().getResource("").getPath()また、あるパケットにファイルを格納したい場合は、ファイル(パケットの最後のレベルのディレクトリに先に配置)eg
String p1=JdomParse.class.getClassLoader().getResource("").getPath();
System.out.println("JdomParse.class.getClassLoader().getResource--"+p1); : JdomParse.class.getClassLoader().getResource--/E:/order/002_ext/WebRoot/WEB-INF/classes/
出力:JdomParse.class.class.getResource—/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/(JdomParseはsrcディレクトリの下のjdomパケットのクラス)を得ることができます.
五属性ファイルの読み取り方法一String p2=JdomParse.class.getResource("").getPath();
System.out.println("JdomParse.class.getResource---"+p2);
       ,          p.getProperty("name")        

メソッド2 InputStream in = lnew BufferedInputStream( new FileInputStream(name));
Properties p = new Properties();
p.load(in);
エンジニアリングsrcディレクトリの下でpropertiesTest.properties(名前の接尾辞はpropertiesでなければならない)ファイルの内容は以下の通りです:Locale locale = Locale.getDefault();
ResourceBundle localResource = ResourceBundle.getBundle("test/propertiesTest", locale);
String value = localResource.getString("test");
System.out.println("ResourceBundle: " + value);
public class FileTest {
public static void main(String[] args) {
    System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
    System.out.println(FileTest.class.getClassLoader().getResource(""));
    System.out.println(ClassLoader.getSystemResource(""));
    System.out.println(FileTest.class.getResource(""));
    System.out.println(FileTest.class.getResource("/")); // Class      
    System.out.println(new File("/").getAbsolutePath());
    System.out.println(System.getProperty("user.dir"));
}

}
出力結果:test=hello word原文住所:http://blog.csdn.net/ak913/article/details/7399056