java - 如何在 Mac 中的 java 中恢复使用 File.delete() 方法删除的文件
问题描述
我在我的 Mac 上编写了一个小 java 工具来删除重复的文件,如 file[1].jpg 它确实有效。之后我想快速修改它,以便像 file(1).png 这样的文件也被删除。我在我的正则表达式中犯了一个小错误,并犯了第二个错误,相信自己并认为我不需要测试它。现在我的桌面没有文件了。
java是只删除指向文件的指针还是将文件移动到某处以便我可以恢复已删除的文件?它们不在垃圾箱中。有没有办法恢复这些文件?
import java.util.regex.*;
import java.util.List;
import java.util.ArrayList;
public class DuplicateFilesDelter{
public static void main(String [] args){
if(args.length!=0){
final File folder = new File(args[0]);
List<File> filesToDelete = new ArrayList<File>();
if(folder.isDirectory()&& folder.exists()){
try{
File[] files = folder.listFiles();
int duplicates = 0;
for(File file : files){
String name = file.getName();
if(Pattern.matches(".*\\[[1-9]\\].*",name)|| Pattern.matches(".*([1-9]).*",name)){
filesToDelete.add(file);
duplicates++;
}
}
System.out.println("Deleting " + duplicates + " duplicates from " + files.length);
int deleted = 0;
for(File f : filesToDelete){
try{
System.out.println("Delting " + f.getName() );
f.delete();
deleted++;
}catch(Exception e){}
}
files = folder.listFiles();
System.out.println("Deleted " + deleted + " Files from " + filesToDelete.size());
System.out.println(files.length + " Files left");
}catch(Exception e){
System.err.println(e.getMessage());
}
}else{
System.out.println( args[0] + "is Directory : " + folder.isDirectory());
System.out.println( args[0] + "exists : " + folder.exists());
}
}
}
}
解决方案
Java 是只删除指向文件的指针还是将文件移动到某处以便我可以恢复已删除的文件?
unlink
Java 通过系统调用告诉操作系统删除 MacOS / Linux / UNIX 上的文件。
它们不在垃圾箱中。有没有办法恢复这些文件?
不是在 Java 中。您也许可以使用文件恢复工具来恢复它们。
推荐阅读
- express - 在快速边缘迭代数字类型?
- java - 我想使用 java 实现 websocket,但 StompHeaderAccessor 引用的 getSessionAttributes() 函数显示错误
- steam - 以欧元获取 Steam 市场 (API) 结果
- verilog - 32 位加法减法器模型编译错误:Illegal Lvalue
- google-cloud-storage - Firebase 存储公共 URL 访问被拒绝(我需要一个具有公共访问权限的永久 URL) makePublic()
- oop - 为什么这个 oops 概念代码不起作用?
- php - Apache 正在下载 php 文件而不是执行它们
- openapi - 如何区分 OpenAPI 模式中的多个属性?
- javascript - 使用 webservice 响应 typescript Promise 并依赖于循环中的另一个函数
- python - Opencv 打开图像或窗口以 99% 的 CPU 利用率启动 Python