繁体   English   中英

如何在 Mac 中的 java 中恢复使用 File.delete() 方法删除的文件

[英]How to recover Files delted with File.delete() method in java in Mac

我在我的 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 是否仅删除指向文件的指针,还是将文件移动到某处以便我可以恢复已删除的文件?

Java 告诉操作系统通过unlink系统调用删除 MacOS / Linux / UNIX 上的文件。

它们不在垃圾箱中。 有没有办法恢复这些文件?

不在 Java 中。 您也许可以使用文件恢复工具来恢复它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM