Как переместить файл JAR в папку автозагрузки - Java - PullRequest
0 голосов
/ 24 июня 2018

Я попытался переместить text and jar file в папку автозагрузки с этим кодом:

File m = new File("C:\\Users\\danyb\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\lol.txt");//startup the text file
    File m2 = new File("Arma3.jar");//where the first file
    File m3 = new  File("C:\\Users\\danyb\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\Arma3.jar");//startup the jar file

    if( !m.exists()&& !m3.exists()){
        m.createNewFile();
        System.out.println("a");
        m2.renameTo(m3);
        System.out.println("a");
        FileWriter fr = new FileWriter("C:\\Users\\danyb\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\lol.txt");
        BufferedWriter br = new BufferedWriter(fr);
        br.write("lol");
        br.close();




       return;


    }

Мы проверили это, и результат был: Файл "lol.txt" был создан, но файл Arma3.jar не был перемещен в папку, но был выполнен код после m2.renameTo(m3);, но не был перемещен Arma3.jar Почему?

1 Ответ

0 голосов
/ 24 июня 2018

Согласно документации Java для класса файлов :

public boolean renameTo(File dest)
Renames the file denoted by this abstract pathname.
Many aspects of the behavior of this method are inherently platform-dependent: The rename operation might not be able to move a file from one filesystem to another, it might not be atomic, and it might not succeed if a file with the destination abstract pathname already exists. The return value should always be checked to make sure that the rename operation was successful.

Note that the Files class defines the move method to move or rename a file in a platform independent manner.

Другими словами:

  1. Метод File.renameTo(File) может завершиться ошибкой и вернуть false -и вы всегда должны проверять это и обрабатывать такие случаи, например, выбрасывая исключение или повторяя операцию.Единственный способ определить, что на самом деле пошло не так, это использовать отладчик, но даже в этом случае вы, вероятно, в конечном итоге достигнете собственного метода, который отладчик не сможет ввести.
  2. Метод File.renameTo(File) зависит от платформы, то есть он работает по-другомуна разных операционных системах.Поскольку весь смысл использования Java заключается в создании приложения, способного корректно работать на нескольких системах, предпочтительно перемещать файлы, используя Files.move(Path, Path, CopyOptions) (см. документация ), который не зависит от платформы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...