1、创建文件、判断目录是否存在、文件是否存在、不存在进行创建、存在则删除。并把内容写入文件。
public static void main(String[] args) throws IOException {
Path file_output = Paths.get("C:","MainFile", "计算数据", "json数据", "outputjson.json");
// 获取文件的父目录
Path parentDir = file_output.getParent();
// 检查父目录是否存
if (!Files.exists(parentDir)) {
try {
// 如果父目录不存在,则创建它
Files.createDirectories(parentDir);
System.out.println("父目录已创建: " + parentDir);
} catch (IOException e) {
System.err.println("创建父目录时出错: " + e.getMessage());
// 处理异常,比如退出程序或记录日志
return;
}
} else {
System.out.println("父目录已存在: " + parentDir);
}
// 检查文件是否存在
if (Files.exists(file_output)) {
try {
Files.deleteIfExists(file_output);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("文件已存在: " + file_output);
} else {
// 在这里,你可以选择是否创建文件。如果需要创建空文件,可以使用以下代码:
try {
Files.createFile(file_output);
System.out.println("文件已创建: " + file_output);
} catch (IOException e) {
System.err.println("创建文件时出错: " + e.getMessage());
}
}
Writer write = Files.newBufferedWriter(file_output, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
write.write("123123132");
write.flush();
write.close();
}
2、删除带有某些后缀的文件。
Path dir = Paths.get(root, "result");
List<Path> filesToDelete = new ArrayList<>();
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
for (Path file: stream) {
String fileName = file.getFileName().toString();
if (fileName.endsWith(".xlsx")) {
filesToDelete.add(file); // 将要删除的文件添加到列表中
}
}
} catch (IOException | DirectoryIteratorException e) {
e.printStackTrace();
}
// 遍历结束后,删除收集到的文件
for (Path fileToDelete : filesToDelete) {
try {
Files.delete(fileToDelete);
} catch (IOException e) {
e.printStackTrace();
}
}
3、读取文件内容
public static void main(String[] args) {
// 假设你有一个 Path 对象
Path path = Paths.get("C:", "MainFile", "计算数据", "json数据", "outputjson.json");
try {
// 使用 Files 类的 readAllBytes 方法读取文件内容,并将其转换为字符串
byte[] fileContent = Files.readAllBytes(path);
String content = new String(fileContent, StandardCharsets.UTF_8);
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
4、复制文件
public static void main(String[] args) throws IOException {
Path source = Paths.get("C:", "MainFile", "计算数据", "json数据", "outputjson.json");
Path destination = Paths.get("C:", "MainFile", "计算数据", "json数据", "outputjson1.json");
Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING);
}
5、移动文件
Path sourcePath = Paths.get("C:", "MainFile", "计算数据", "json数据", "outputjson.json");
Path targetPath = Paths.get("D:", "MainFile", "计算数据", "json数据", "outputjson.json");
// 获取文件的父目录
Path parentDir1 = targetPath.getParent();
// 检查父目录是否存在
if (!Files.exists(parentDir1)) {
try {
// 如果父目录不存在,则创建它
Files.createDirectories(parentDir1);
System.out.println("父目录已创建: " + parentDir1);
} catch (IOException e) {
System.err.println("创建父目录时出错: " + e.getMessage());
// 处理异常,比如退出程序或记录日志
return;
}
} else {
System.out.println("父目录已存在: " + parentDir1);
}
try {
Files.move(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING);
System.out.println("File moved successfully.");
} catch (IOException e) {
System.err.println("Error moving file: " + e.getMessage());
}
6、获取文件大小
Path path = Paths.get("C:", "MainFile", "计算数据", "json数据", "outputjson.json");
try {
long size = Files.size(path);
System.out.println("File size: " + size + " bytes");
} catch (IOException e) {
System.err.println("Error getting file size: " + e.getMessage());
}
7、获取文件后缀
public static void main(String[] args) {
// 创建一个Path对象
Path path = Paths.get("C:", "MainFile", "计算数据", "json数据", "outputjson.json");
// 获取文件名
String fileName = path.getFileName().toString();
// 提取文件后缀
// 注意:这里假设文件名中只有一个点号(.)作为文件和后缀的分隔符
int dotIndex = fileName.lastIndexOf('.');
if (dotIndex > 0) {
String fileExtension = fileName.substring(dotIndex + 1);
System.out.println("File extension: " + fileExtension);
} else {
System.out.println("No file extension found.");
}
}
后续用到的还会继续更新、File对于安全扫描有一定的问题:
Sink: java.io.File.File()
Enclosing Method: Output_Self()
File: File file_input = new File(“MainFile”+File.separator+“计算数据”+File.separator+“json数据”+File.separator+“inputjson.json”);
Taint Flags: FILESEPARATOR
即使使用了File.separator来处理也会存在安全问题。