Изменить скрытый файл в Java - PullRequest
4 голосов
/ 20 мая 2010

У меня есть файл, который пользователь загружает, а затем я выполняю команду в java, чтобы скрыть файл:

Runtime.getRuntime().exec("attrib +H myFile.txt");

Теперь позже мне нужно получить доступ к этому скрытому файлу, но я получаю

java.io.FileNotFoundException: myFile.txt (Access is denied)

Это работает, если файл не скрыт, но файл должен быть скрыт, чтобы пользователь не мог его изменить. Так как мне изменить скрытый файл? Есть ли способ сделать это в Java?

Спасибо за ваши идеи.

Ответы [ 2 ]

6 голосов
/ 20 мая 2010

Я согласен с Dolph, однако вы можете также рассмотреть альтернативы использованию скрытых файлов. Во-первых, вы теперь зависите от (attrib) команды (Windows). Во-вторых, тот факт, что файл помечен как скрытый, не означает, что пользователь не может его видеть или изменять (на моем компьютере всегда отображаются скрытые файлы). В качестве альтернативы вы можете рассмотреть возможность использования стандартных расположений каталогов и соглашений об именах файлов. Например, в Windows стандартное место для размещения данных вашего приложения находится в папке «Данные приложения». Вы можете найти эту папку, используя системное свойство "user.home":

System.out.println(System.getProperty("user.home"));
//prints out something like C:\Documents And Settings\smithj

Вы можете использовать это для создания своей собственной папки Application Data:

//For Windows
File appDataDir = new File(System.getProperty("user.home"), "Application Data\\MyWidgetData");

Аналогично, в * nix-средах приложения обычно хранят свои данные в каталоге .xyz в домашнем каталоге:

//*nix OSes
System.out.println(System.getProperty("user.home"));
//prints out something like /user/home/smithj
File appDataDir = new File(System.getProperty("user.home"), ".MyWidgetData");

Вы можете посмотреть на свойство os.name, чтобы определить, в какой среде вы работаете, и построить правильный путь на основе этого.

3 голосов
/ 20 мая 2010

Сначала откройте файл:

Runtime.getRuntime().exec("attrib -H myFile.txt");
                                  ^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...