Java File.canWrite () в Vista и супер скрытые файлы - PullRequest
1 голос
/ 11 ноября 2008

У меня есть код, который эффективно делает это:

File file = new File("C:\\Program Files (x86)\\Something\\fred.txt");
System.out.println("file.canWrite() = " + file.canWrite());

Это печатает правда. Странно, я могу создать файл без каких-либо исключений. Кроме того, другая программа может прочитать созданный мной файл. Дело в том, что в Windows Explorer файл вообще не отображается!

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

Я также узнал о «супер скрытых файлах» в Vista, поэтому я включил эту опцию и до сих пор не вижу файл! Может быть, я не правильно отредактировал свой реестр - я могу только предположить, что файл является супер скрытым - где еще это может быть?

Теперь проблема в том, что я создаю html-файл, и когда я запускаю браузер, он не видит html-файл, потому что он супер скрыт.

Как я могу запретить Java создавать супер скрытый файл? Это работает под JRE 6 обновление 6.

Ответы [ 2 ]

9 голосов
/ 11 ноября 2008

Скорее всего, вы «жертва» перенаправления папок. Когда UAC включен, любые записи в Program Files перенаправляются в другое место, когда вы не запускаете программу от имени администратора.

Вы должны найти свой файл в C: \ Users \ \ AppData \ Local \ VirtualStore \ \ \ \ .

Надлежащим решением, конечно же, является не писать программы в первую очередь. Вместо этого используйте где-нибудь в домашнем каталоге пользователя (точное местоположение, в которое вы должны писать, зависит от цели приложения).

0 голосов
/ 11 ноября 2008

Я полагаю, что обновление 10 могло изменить это поведение. Я знаю, что в браузере реализованы многие вещи, чтобы лучше работать с Vista. Я не уверен на 100%, но я предлагаю вам взглянуть.

...