Hutool文件读取基础
Hutool的FileUtil
类提供多种文件读取方式:
// 读取文本文件
String content = FileUtil.readUtf8String("test.txt");
// 按行读取
List<String> lines = FileUtil.readUtf8Lines("test.txt");
// 读取为字节数组
byte[] bytes = FileUtil.readBytes("test.bin");
前端数据渲染准备
将读取的数据转换为前端可识别格式,推荐使用JSON:
// 使用Hutool的JSONUtil转换
List<Data> dataList = parseData(lines); // 自定义解析逻辑
String json = JSONUtil.toJsonStr(dataList);
接口暴露与联调
通过Spring Boot创建REST接口:
@RestController
@RequestMapping("/api/file")
public class FileController {
@GetMapping("/content")
public String getFileContent() {
String content = FileUtil.readUtf8String("data.json");
return JSONUtil.parseObj(content).toString();
}
}
前端Vue.js调用示例
axios.get('/api/file/content')
.then(response => {
this.dataList = response.data;
})
.catch(error => {
console.error('文件读取失败:', error);
});
联调常见问题处理
文件路径问题:建议使用绝对路径或classpath路径
// 获取resources目录下的文件
ClassPathResource resource = new ClassPathResource("data.json");
String path = resource.getPath();
编码问题:确保前后端统一使用UTF-8编码
// 写入文件时指定编码
FileUtil.writeString(content, "data.json", CharsetUtil.UTF_8);
性能优化建议
大文件处理采用流式读取:
FileReader reader = FileReader.create(new File("large.txt"), CharsetUtil.UTF_8);
reader.read(buffer -> {
// 分块处理逻辑
});
安全注意事项
文件上传校验:限制文件类型和大小
// 检查文件扩展名
String extName = FileUtil.extName(uploadFile.getOriginalFilename());
if(!ArrayUtil.contains(new String[]{"txt","json"}, extName)){
throw new IllegalArgumentException("非法文件类型");
}