SpringBoot读取类路径下文件
在Spring Boot项目中,经常需要读取resources
目录下的文件,不论是配置文件、静态资源还是其他数据文件。本文将介绍9种不同的方式,帮助您轻松读取resources
目录下的文件。
方式1: 使用ClassPathResource
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import java.io.InputStream;
public class ResourceExample {
public static void main(String[] args) throws IOException {
Resource resource = new ClassPathResource("my-file.txt");
InputStream inputStream = resource.getInputStream();
// 进一步处理 inputStream
}
}
方式2: 使用ResourceLoader
import org.springframework.core.io.ResourceLoader;
import org.springframework.core.io.Resource;
import java.io.InputStream;
import org.springframework.beans.factory.annotation.Autowired;
public class ResourceLoaderExample {
@Autowired
private ResourceLoader resourceLoader;
public void readFile() throws IOException {
Resource resource = resourceLoader.getResource("classpath:my-file.txt");
InputStream inputStream = resource.getInputStream();
// 进一步处理 inputStream
}
}
方式3: 使用ClassLoader
import java.io.InputStream;
public class ClassLoaderExample {
public static void main(String[] args) throws IOException {
ClassLoader classLoader = ClassLoaderExample.class.getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("my-file.txt");
// 进一步处理 inputStream
}
}
方式4: 使用FileCopyUtils
import org.springframework.util.FileCopyUtils;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
public class FileCopyUtilsExample {
public static void main(String[] args) throws IOException {
InputStream inputStream = FileCopyUtilsExample.class.getResourceAsStream("/my-file.txt");
String content = new String(FileCopyUtils.copyToByteArray(inputStream), StandardCharsets.UTF_8);
// 处理 content
}
}
方式5: 使用ResourceUtils
import org.springframework.util.ResourceUtils;
import java.io.File;
public class ResourceUtilsExample {
public static void main(String[] args) throws IOException {
File file = ResourceUtils.getFile("classpath:my-file.txt");
// 进一步处理 file
}
}
方式6: 使用FileInputStream
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamExample {
public static void main(String[] args) throws IOException {
File file = new File(FileInputStreamExample.class.getClassLoader().getResource("my-file.txt").getFile());
try (FileInputStream fis = new FileInputStream(file)) {
// 读取文件内容
}
}
}
方式7: 使用SpringResourceLoader
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import java.io.InputStream;
public class SpringResourceLoaderExample {
@Bean
public DefaultResourceLoader resourceLoader() {
return new DefaultResourceLoader();
}
public void readFile() throws IOException {
Resource resource = resourceLoader().getResource("classpath:my-file.txt");
InputStream inputStream = resource.getInputStream();
// 进一步处理 inputStream
}
}
方式8: 使用ServletContext
import javax.servlet.ServletContext;
import java.io.InputStream;
import org.springframework.beans.factory.annotation.Autowired;
public class ServletContextExample {
@Autowired
private ServletContext servletContext;
public void readFile() throws IOException {
InputStream inputStream = servletContext.getResourceAsStream("/WEB-INF/classes/my-file.txt");
// 进一步处理 inputStream
}
}
方式9: 使用Paths
和Files
(适用于Spring Boot 2.x以上)
import org.springframework.core.io.Resource;
import org.springframework.core.io.DefaultResourceLoader;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Files;
import java.nio.charset.StandardCharsets;
public class PathsAndFilesExample {
public static void main(String[] args) throws IOException {
DefaultResourceLoader resourceLoader = new DefaultResourceLoader();
Resource resource = resourceLoader.getResource("classpath:my-file.txt");
Path path = resource.getFile().toPath();
String content = new String(Files.readAllBytes(path), StandardCharsets.UTF_8);
// 处理 content
}
}
以上这9种方式可以让您轻松读取resources
目录下的文件,选择适合您项目需求的方式,并根据示例代码来实现文件读取功能。希望这些方式能帮助您在Spring Boot项目中处理资源文件。