📜  使用示例从Java中的类路径加载资源

📅  最后修改于: 2022-05-13 01:55:51.620000             🧑  作者: Mango

使用示例从Java中的类路径加载资源

资源是文件或图像或其他格式的东西的集合。 Java程序帮助我们加载这些文件或资源图像,并对它们执行读写操作。例如,我们可以从任何资源目录加载一个文件,然后就可以读取该文件的内容。基本上,我们主要关注加载的主题而不是如何读取文件,但我们将使用一些有关如何读取文件的想法来演示我们的示例。

加载资源和对其进行操作主要有两种方式。我们可以将文件(存在于资源文件夹中)加载为输入流或 URL 格式,然后对它们执行操作。

所以基本上有两种方法命名: 获取资源() getResourceAsStream()用于从类路径加载资源。这些方法通常分别返回 URL 和输入流。这些方法存在于Java.lang.Class 包中。

所以在这里我们使用classLoader()方法获取绝对类路径。此外,我们正在使用getClass() 方法在这里获取要加载其路径的类。基本上,它将是我们代码的 .class 文件的类。所以我们应该确保资源位于类的路径中。

因此,使用类路径从名称本身加载文件是通过组合上述所有方法来完成的。获取文件后,我们必须读取其内容,因此我们将对它们执行读取操作。

所以这里要考虑的两个要点是:

  1. 由于 getClass() 方法是非静态的,因此我们在这里声明了我们文件的公共类的对象。所以我们不能在没有对象的情况下调用这个方法。
  2. 在下面的代码中,我们考虑了一个名为 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);
    }
}


第二个代码的输出。