Как восстановить файлы, удаленные с помощью метода File.delete () в Java в Mac - PullRequest
0 голосов
/ 09 ноября 2019

Я писал небольшой инструмент Java на своем Mac для удаления дубликатов файлов, таких как file [1] .jpg Это сработало. После этого я хотел быстро изменить его, чтобы также удалялись файлы типа file (1) .png. Я допустил небольшую ошибку в своем Regex и сделал вторую ошибку, доверяя себе и думая ооо, мне не нужно это проверять. Теперь на моем рабочем столе не осталось файлов.

Удаляет ли 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());
            }
        }
    }
}

1 Ответ

2 голосов
/ 09 ноября 2019

Удаляет ли Java только указатель на файлы или перемещает файлы куда-нибудь, чтобы я мог восстановить удаленные файлы?

Java указывает операционной системе удалить файл в MacOS / Linux / UNIX, выполнив системный вызов unlink.

Они не находятся в Корзине. Есть ли способ восстановить эти файлы?

Не на Java. Вы можете восстановить их с помощью инструмента восстановления файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...