getResourceAsStreamとgetResourceの使い方およびDemoの例

5480 ワード

getResourceAsStream getResource    Demo  
 
 JAVA    ,    ,              ,      ,       ,       ,   JAVA File ,     D:/test.txt  ,     File file = newFile("D:/test.txt");        ,       ,       ,  JAVA    ,        ,     ,         ,            Windows       ,  linux  ,      c:/     ,    ,  ,              ,         。 

   Servlet   ,   getRealPath(String str)   ,                   ,          ,               ,  ,                 ? 

        Class.getResource() Class.getResourceAsStream()  !
 
 
 、getResourceAsStream  
  ,Java  getResourceAsStream     : 

1. Class.getResourceAsStream(String path) : 
path   ’/'                 , ’/'      ClassPath    。     path        ,     ClassLoader    。   
 
2. Class.getClassLoader.getResourceAsStream(String path) :
     ClassPath    ,path   ’/'  ,       ClassLoader    。 
  
3. ServletContext. getResourceAsStream(String path):
   WebAPP       ,Tomcat path   ’/'     ,                。 
  
4. Jsp  application         ServletContext     。   
  ,getResourceAsStream          :

    :        .class        ,  :com.x.y    me.class ,       myfile.xml   ,       : 
 
Java    
me.class.getResourceAsStream("myfile.xml");   
 
    : me.class       ,  :com.x.y    me.class ,    com.x.y.file         myfile.xml     ,       : 
 
Java    
me.class.getResourceAsStream("file/myfile.xml");   
 
    :  me.class   ,       ,  :com.x.y    me.class ,    com.x.file         myfile.xml     ,       : 
  
Java    
me.class.getResourceAsStream("/com/x/file/myfile.xml");   
  
 
 
    ,           
  :    “   / ”
“ / ”         ,       myproject,“ / ”   myproject   
 
 
Java    
me.class.getResourceAsStream("/com/x/file/myfile.xml");  
   
 
  :     “   / ”  
        
 
Java    
me.class.getResourceAsStream("myfile.xml");     
  
me.class.getResourceAsStream("file/myfile.xml");   
 
 、getResource  
 
           
|--project 
    |--src 
        |--javaapplication 
            |--Test.java 
            |--file1.txt 
        |--file2.txt 
    |--build 
        |--javaapplication 
            |--Test.class 
            |--file3.txt 
        |--file4.txt
       ,   src  ,  JAVA      ,   build  ,  JAVA     (.class   )      
  ,   Test           
file1.txt file2.txt file3.txt file4.txt      ?
 
   file3.txt file4.txt

file3.txt (      ):
 
Java    
File file3 = new File(Test.class.getResource("file3.txt").getFile());  
File file3 = new File(Test.class.getResource("/javaapplication/file3.txt").getFile());  
File file3 = new File(Test.class.getClassLoader().getResource("javaapplication/file3.txt").getFile());   
 
 
file4.txt:(      ):
 
Java    
File file4 = new File(Test.class.getResource("/file4.txt").getFile());  
File file4 = new File(Test.class.getClassLoader().getResource("file4.txt").getFile());   
 
 
file1 file2   ?    ?
 
   ,            ,   file3 file4   class.getResource()      ,          
    project    c:/ ,  file1 file2        :

file1.txt
Java    
File file1 = new File("c:/project/src/javaapplication/file1.txt");   
 
file2.txt
Java    
File file2 = new File("c:/project/src/file2.txt");   
 
    :
 
 
        ,        .class      ,   .java         ,         .class,    .java     ,  java      。

   getResouce()     ,  class    ,          ,             ,       ,      IDEbuild          ,       package     ,   Web   ,   WEB-INF   ,WEB-INF       web.xml   ,    classes  ,   ,      WEB   package     ,    .class     “/”,  clasaes       file.txt  ,        "/file.txt",         "/"  ,         .class   。。 

getResourceAsStream()      getResouce()      ,      getResource()  File   , new InputStream(file)      。
 
class.getResource("/") -->   class         ,          。 --> file:/home/duanyong/workspace/cxxx/xxxx/bin/WEB-INF/classes/ 
class.getResource("/xxx.txt") -->         xxx.txt  。 file://..../bin/WEB-INF/classes/xxx.txt 

getResource(String path),path  class              。       classes, classes/xxx/yyy.txt       。  yyy.txt    :class.getResource("/xxx/yyy.txt");
 
 
Java    
//  classes      /xxx/yyy.txt       
System.out.println(Test.class.getResource("/xxx/yyy.txt"));     
//   class         
System.out.println(Test.class.getResource(Test.class.getSimpleName() + ".class"));     
 
 
  : 
file:/home/duanyong/workspace/test/bin/WEB-INF/classes/xxx/yyy.txt 
file:/home/duanyong/workspace/test/bin/WEB-INF/classes/cn/duanyong/test/Test.class
 
 、getResourceAsStream getResource      
 :testpinyin.txt      src 
 
 
Java    
import java.io.IOException;  
import java.io.InputStream;  
  
public class Test {  
     public void getResource(String url){  
         InputStream stream = getClass().getResourceAsStream(url);  
         System.out.println(getClass().getResource(url));  
         byte[] line = new byte[1024*1024];  
         try {  
             stream.read(line);  
         } catch (IOException e) {  
             // TODO Auto-generated catch block  
             e.printStackTrace();  
         }  
         String str = new String(line);  
         System.out.println(str.trim());  
     }  
       
     public static void main(String[] args) {  
         new Test().getResource("/testpinyin.txt");  
     }  
}  
 
     :
file:/E:/workspace/testhttpclient/bin/testpinyin.txt
emergency
       testpinyin.txt   ,    testpinyin.txt   。
            “/”,“/”       ,     。