getResourceAsStream () returns the InputStream
GetResource () return: URL
Class.getResource ("") returns the start of the package where the current class is located
Class.getResource ("/") returns the position of the Classpath
getClassLoader (). GetResource ("") returns the position of Classpath
getClassLoader (). GetResource ("/") wrong!!
========================================================================
Class.getresourceasstream and Classloader.getresourceasstream
These two methods are slightly different, have not been distinguished before, until today found to write such a code to run the error, before the problem clarified.
Basically, two can be used for resource reading from Classpath, Classpath contains the paths in Classpath and jars in Classpath.
The difference between the two methods is that the resource is defined differently, one is primarily used relative to an object resource, and the other is used to take the resource relative to the classpath, using an absolute path.
When using Class.getresourceasstream, there are two ways in which a resource path, one at/beginning, is to specify an absolute path, and if it does not start with/, the path is relative to the package where the class resides.
When using Classloader.getresourceasstream, the path directly uses the absolute path relative to the classpath.
For example, the following three statements, the actual result is the same
Com.explorers.Test.class.getResourceAsStream ("Abc.jpg")
Com.explorers.Test.class.getResourceAsStream ("/com/explorers/abc.jpg")
Classloader.getresourceasstream ("Com/explorers/abc.jpg")
================================================================================
Usually write the program, many times the hint file can not find, and thrown the exception, now sorted as follows
The acquisition of a relative path
Description: The relative path (that is, the relative who does not specify) can be obtained in the following ways (whether it is a general Java project or a Web project)
String relativelypath=system.getproperty ("User.dir");
In the relative path above, the files in the Java project are relative to the project's root directory
File paths in Web projects vary depending on the Web server (tomcat is relative to Tomcat installation directory \ Bin)
Acquisition of the second class loading directory (i.e. when the runtime gets its loading directory)
1 Common method One (whether it is a general Java project or a Web project, first navigate to the first level of directory to see the package path)
InputStream Is=testaction.class.getclassloader (). getResourceAsStream ("test.txt");
(The path to the Test.txt file is the project name \src\test.txt; class Testaction The first level of the package is located under the SRC directory)
Replace Testaction,test.txt with the corresponding class name and file name in the form
2 Common Method Two (this method is similar to the method in 1, but this method must start with '/')
InputStream Is=test1.class.getresourceasstream ("/test.txt");
(The path to the Test.txt file is the project name \src\test.txt, class Test1 the first level of the package is located under the SRC directory)
Acquisition of the root directory of three Web projects (after publication)
1 starting from the servlet
You can create a servlet to write the following statement in its Init method
ServletContext S1=this.getservletcontext ();
String Temp=s1.getrealpath ("/"); Key
Results in the form of: D:\ tool \tomcat-6.0\webapps\002_ext\ (002_ext for project name)
If the S1.getrealpath ("") is invoked, the output D:\ tool \tomcat-6.0\webapps\002_ext (one less "\")
2 Starting from HttpServletRequest
String cp11111=request.getsession (). Getservletcontext (). Getrealpath ("/");
Results in the form of: D:\ tool \tomcat-6.0\webapps\002_ext\
Four Classpath acquisition (in Eclipse for the path to the SRC or classes directory)
Method one Thread.CurrentThread (). Getcontextclassloader (). GetResource (""). GetPath ()
Eg:string T=thread.currentthread (). Getcontextclassloader (). GetResource (""). GetPath ();
SYSTEM.OUT.PRINTLN ("t---" +t);
Output: T---/e:/order/002_ext/webroot/web-inf/classes/
Method two JdomParse.class.getClassLoader (). GetResource (""). GetPath () (Jdomparse is a class in a package of SRC, hereinafter)
Eg:string P1=jdomparse.class.getclassloader (). GetResource (""). GetPath ();
System.out.println ("JdomParse.class.getClassLoader (). getresource--" +P1);
Output: JdomParse.class.getClassLoader (). getresource--/e:/order/002_ext/webroot/web-inf/classes/
In addition, if you want to put a file in a package, you can get to the file in the following ways (navigate to the last level of the package first)
eg String p2=jdomparse.class.getresource (""). GetPath ();
System.out.println ("JdomParse.class.getResource---" +p2);
Output: JdomParse.class.getResource---/e:/order/002_ext/webroot/web-inf/classes/jdom/(jdomparse is a class in the Jdom package under the SRC directory)
Read the Five property files:
Method One
InputStream in = Lnew bufferedinputstream (new FileInputStream (name));
Properties P = new properties ();
P.load (in);
Note the problem with the path, and after execution you can call P.getproperty ("name") to get the value of the corresponding property
Method Two
Locale Locale = Locale.getdefault ();
ResourceBundle Localresource = Resourcebundle.getbundle ("test/propertiestest", locale);
String value = localresource.getstring ("test");
System.out.println ("ResourceBundle:" + value);
Engineering src directory propertiestest.properties (name suffix must be properties) the contents of the file are as follows:
Test=hello Word
<span class= "KWRD" >public</span> <span class= "KWRD" >class</span> filetest {<span class= "K" WRD ">public</span> <span class=" KWRD ">static</span> <span class=" KWRD ">void</span > main (string[] args) {system.<span class= "KWRD" >out</span>.println (Thread.CurrentThread (). GetCont
Extclassloader (). GetResource (<span class= "str" > "" </span>)); System.<span class= "KWRD" >out</span>.println (Filetest.<span class= "KWRD" >CLASS</SPAN>.
getClassLoader (). GetResource (<span class= "str" > "" </span>)); System.<span class= "KWRD" >out</span>.println classloader.getsystemresource (<span class= "str" >
"</span>)); System.<span class= "KWRD" >out</span>.println (Filetest.<span class= "KWRD" >CLASS</SPAN>.
GetResource (<span class= "str" > "" </span>)); System.<span class= "KWRD" >out</span>.println (filetesT.<span class= "KWRD" >class</span>.getresource (<span class= "str" > "/" </span>)); <span class= "REM" >//class file path </span> system.<span class= "KWRD" >out</span>.println (<s
Pan class= "KWRD" >new</span> File (<span class= "str" > "/" </span>). GetAbsolutePath ()); System.<span class= "KWRD" >out</span>.println system.getproperty (<span class= "str" > "User.dir"
</span>)); }
}
Output results:
file:/e:/workspace/javastudy/bin/
file:/e:/workspace/javastudy/bin/
file:/e:/workspace/javastudy/bin/
file:/e:/workspace/javastudy/bin/test/
file:/e:/workspace/javastudy/bin/
E:\
E:\workspace\JavaStudy