Spring项⽬读取resource下的⽂件⽬录
⼀、
⼆、
2.1、
2.2、
三、
⼀、前提条件
要去读取的⽂件是存放在project/src/main/resources⽬录下的,如下图中的⽂件。
⼆、使⽤ClassPathResource类读取
2.1、Controller、service中使⽤ClassPathResource
不管是在哪⼀层(service、controller..),都可以使⽤这种⽅式,甚⾄是单元测试中,也是可以的。package cn.ller;
import io.ClassPathResource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
@RestControllerspring framework是什么系统
public class TestController {
@RequestMapping("testFile")
public String testFile() throws IOException {
/
/ ClassPathResource类的构造⽅法接收路径名称,⾃动去classpath路径下⽂件
ClassPathResource classPathResource = new ClassPathResource("");
// 获得File对象,当然也可以获取输⼊流对象
File file = File();
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
StringBuilder content = new StringBuilder();
String line = null;
while ((line = adLine()) != null) {
content.append(line);
}
String();
}
}
2.2、单元测试使⽤ClassPathResource
单元测试也是可以使⽤ClassPathResource,但是需要注意:
1、单元测试的资源⽬录默认是project/src/test/resources,如果该⽬录下到单元测试需要的⽂件,那么就⽤到的⽂件;
2、如果在单元测试的资源⽬录下没有到单元测试需要的⽂件,就会去/project/src/main/resources⽬录下的同名⽂件进⾏操作。
package cn.ample;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.st.context.SpringBootTest;
import io.ClassPathResource;
import st.context.junit4.SpringRunner;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationConfigTest {
@Test
public void testFile() throws IOException {
final ClassPathResource classPathResource = new ClassPathResource("");
final File file = File();
final BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String line = null;
while ((line = adLine()) != null) {
System.out.println(line);
}
}
}
三、使⽤FileSystemResource类读取⽂件
FileSystemResource这个类在⽂件的时候就是按照给定的路径名去,默认的当前⽬录就是项⽬根⽬录。
使⽤该类来查⽂件时,需要保证⽂件路径完全正确,另外,在代码中将路径写死是⼀个不好的习惯,特别是⼀个⽂件的路径在不同的主机上的位置(层级⽬录)不⼀定相同,所以我们开发过程中很少使⽤这种⽅式。
FileSystemResource的⽤法和ClassPathResource的⽤法相似,因为他们都继承了AbstractResource这个抽象类。
package cn.ample;
import org.junit.Test;
import io.FileSystemResource;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class FileTest extends ApplicationConfigTest {
@Test
public void testFile() throws IOException {
FileSystemResource resource = new FileSystemResource("./");
System.out.File().getAbsolutePath());
// 传⼊当前路径,获得的是项⽬根⽬录:/Users/ganlixin/code/Spring/demo/example/.
// 传⼊根⽬录路径,获得的就是操作系统的根⽬录
resource = new FileSystemResource("/");
System.out.File().getAbsolutePath()); // 输出 /
// 获取单元测试resources⽬录下的,需要指定详细的路径
resource = new FileSystemResource("src/test/");
final File file = File();
final BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); String line = null;
while ((line = adLine()) != null) {
System.out.println(line);
}
}
}
这⾥就列举了两种⽅式,还有其他很多⽅式,这两种应该够⽤了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论