java相关技术总结
1.操作文件(包含win和linux)
工具类:
package org.example.demo1boot.daran.util;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class FileUtils {
/**
* 获取项目路径:拼成全路径
* linux和window都可以
* @return
*/
private static String getProjectTxtPath() {
String rootPath = System.getProperty("user.dir"); // 项目根目录
Path txtPath = Paths.get(rootPath, "data", "txt");
if (!Files.exists(txtPath)) {
try {
Files.createDirectories(txtPath);
} catch (IOException e) {
throw new RuntimeException("无法创建目录: " + txtPath, e);
}
}
return txtPath.toString();
}
/**
* 写入或者追加文件内容
* @param data 数据
* @param fileName 文件名称
* @param flag true:写入,false:追加
* @return
*/
public static String save(String data,String fileName,boolean flag) {
try {
String filePath = getProjectTxtPath() + "/"+fileName;
StandardOpenOption options;
if(flag){
options=StandardOpenOption.APPEND;
}else{
options= StandardOpenOption.TRUNCATE_EXISTING;
}
Files.write(Paths.get(filePath), data.getBytes(),
StandardOpenOption.CREATE, options);
return "数据保存成功: " + filePath;
} catch (IOException e) {
return "保存失败: " + e.getMessage();
}
}
//读取文件
public static String read(String fileName) {
try {
String filePath = getProjectTxtPath() + "/"+fileName;
if (!Files.exists(Paths.get(filePath))) {
return "文件不存在";
}
return new String(Files.readAllBytes(Paths.get(filePath)));
} catch (IOException e) {
return "读取失败: " + e.getMessage();
}
}
}
调用:
private static String FILE_NAME = "sensor_data.txt";
@GetMapping("/saveSensorData")
public String saveSensorData(@RequestParam String data) {
if (StringUtils.isEmpty(data)) {
return "数据不能为空";
}
return FileUtils.save(data,FILE_NAME,true);
}
@GetMapping("/getSensorData")
public String getSensorData() {
return FileUtils.read(FILE_NAME);
}