使用示例从Java中的类路径加载资源
资源是文件或图像或其他格式的东西的集合。 Java程序帮助我们加载这些文件或资源图像,并对它们执行读写操作。例如,我们可以从任何资源目录加载一个文件,然后就可以读取该文件的内容。基本上,我们主要关注加载的主题而不是如何读取文件,但我们将使用一些有关如何读取文件的想法来演示我们的示例。
加载资源和对其进行操作主要有两种方式。我们可以将文件(存在于资源文件夹中)加载为输入流或 URL 格式,然后对它们执行操作。
所以基本上有两种方法命名: 获取资源() 和getResourceAsStream()用于从类路径加载资源。这些方法通常分别返回 URL 和输入流。这些方法存在于Java.lang.Class 包中。
所以在这里我们使用classLoader()方法获取绝对类路径。此外,我们正在使用getClass() 方法在这里获取要加载其路径的类。基本上,它将是我们代码的 .class 文件的类。所以我们应该确保资源位于类的路径中。
因此,使用类路径从名称本身加载文件是通过组合上述所有方法来完成的。获取文件后,我们必须读取其内容,因此我们将对它们执行读取操作。
We will be using obj.getClass().getClassLoader().getResourceAsStream() and obj.getClass().getClassLoader().getResource() methods to get the stream and URL of the file respectively and then perform the read operations on them.
所以这里要考虑的两个要点是:
- 由于 getClass() 方法是非静态的,因此我们在这里声明了我们文件的公共类的对象。所以我们不能在没有对象的情况下调用这个方法。
- 在下面的代码中,我们考虑了一个名为 GFG_text.txt 的文件,它作为一个资源,我们注意这个资源与我们的 .class 文件在同一路径中。
代码 1:使用 getResourceAsStream() 方法。
Java
// Java program to load resources from Classpath
// using getResourceAsStream() method.
import java.io.*;
import java.nio.file.Files;
//save file as the name of GFG2
public class GFG2 {
//main class
public static void main(String[] args) throws Exception {
// creating object of the class
// important since the getClass() method is
// not static.
GFG2 obj = new GFG2();
// name of the resource
// the resource is stored in our base path of the
// .class file.
String fileName = "GFG_text.txt";
System.out.println("Getting the data of file " + fileName);
// declaring the input stream
// and initializing the stream.
InputStream instr = obj.getClass().getClassLoader().getResourceAsStream(fileName);
// reading the files with buffered reader
InputStreamReader strrd = new InputStreamReader(instr);
BufferedReader rr = new BufferedReader(strrd);
String line;
// outputting each line of the file.
while ((line = rr.readLine()) != null)
System.out.println(line);
}
}
Java
// Java program to load resources from Classpath
// using getResource() method.
import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.List;
//save file as the name of GFG2
public class GFG2 {
//main class
public static void main(String[] args) throws Exception {
// creating object of the class
// important since the getClass() method is
// not static.
GFG2 obj = new GFG2();
// name of the resource
// the resource is stored in our base path of the
// .class file.
String fileName = "GFG_text.txt";
System.out.println("Getting the data of file " + fileName);
// getting the URL of the resource
// and creating a file object to the given URL
URL url = obj.getClass().getClassLoader().getResource(fileName);
File file = new File(url.toURI());
// reading the file data
// by creating a list of strings
// of each line
List line;
// method of files class to read all the lines of the
// file specified.
line = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8);
// reading the list of the line in the file.
for(String s: line)
System.out.println(s);
}
}
代码 2:使用 getResource() 方法。
Java
// Java program to load resources from Classpath
// using getResource() method.
import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.List;
//save file as the name of GFG2
public class GFG2 {
//main class
public static void main(String[] args) throws Exception {
// creating object of the class
// important since the getClass() method is
// not static.
GFG2 obj = new GFG2();
// name of the resource
// the resource is stored in our base path of the
// .class file.
String fileName = "GFG_text.txt";
System.out.println("Getting the data of file " + fileName);
// getting the URL of the resource
// and creating a file object to the given URL
URL url = obj.getClass().getClassLoader().getResource(fileName);
File file = new File(url.toURI());
// reading the file data
// by creating a list of strings
// of each line
List line;
// method of files class to read all the lines of the
// file specified.
line = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8);
// reading the list of the line in the file.
for(String s: line)
System.out.println(s);
}
}