Methods for reading files in java: 1. Read by using the [java.io] method and read from a relative path relative to the current user directory; 2. By using the [java.lang.ClassLoader] method Read, read from a relative path relative to the classpath.
Methods to read files in java:
Two methods to read files in java: java.io And java.lang.ClassLoader
// java.io: File file = new File("..."); FileInputStream fis = new FileInputStream("..."); FileReader fr = new FileReader("..."); //ClassLoader: ClassLoader loader = XXXClass.class.getClassLoader(); ClassLoader loader2 = Thread.currentThread().getContextClassLoader(); URL url = loader.getResource("..."); File file = new File(url.getFile()); InputStream input = loader.getResourceAsStream("...");
1, classes in the java.io package always analyze relative path names based on the current user directory, which means that whether relative paths work well depends on to the value of user.dir. The system property user.dir is set when the JVM is started. It is usually the calling directory of the Java virtual machine, that is, the directory where the java command is executed.
For tomcat/jboss container, user.dir is the %home/bin%/ directory, because this directory is where we start the web container
When running the program in eclipse, eclipse will Set the value of user.dir to the root directory of the project
The user directory can be viewed using System.getProperty("user.dir")
So, use java.io to read the file , whether it is a relative path or an absolute path is not a good practice, don't use it if you can't use it (in JavaEE).
2. Use ClassLoader
Class.getResource() has 2 ways, absolute path and relative path. The absolute path starts with / and searches from the root directory of the classpath or jar package;
The relative path is relative to the directory where the current class is located, allowing you to use .. or . to locate files.
ClassLoader.getResource() can only use absolute paths and does not start with /.
These two methods of reading resource files will not depend on user.dir or the specific deployment environment. They are recommended practices (JavaEE)
How Select
java.io:
Read the relative path relative to the current user directory; focus on dealing with disk files or use in pure java projects.
Although the ClassLoader method is more versatile, if it is not a javaEE environment, it is unreasonable to locate the classpath path to read the file.
java.lang.ClassLoader:
Read relative path relative to classpath; it is recommended to use this method in the javaEE environment.
Usually, ClassLoader cannot read files that are too large. It is suitable for reading configuration files of web projects. If you need to read large files, you still need to use the IO package. You can first obtain the file through ClassLoader. The absolute path, and then passed to File or other objects, it would be better to use the objects in the io package to read.
For more java knowledge, please pay attention to java basic tutorial.
The above is the detailed content of How to read files in java. For more information, please follow other related articles on the PHP Chinese website!