ioexception: требуемая привилегия не удерживается клиентом при записи в файл в java - PullRequest
2 голосов
/ 12 марта 2012

Я искал много похожих вопросов, но не смог решить мою проблему.

Я пытаюсь что-то записать в файл, что выдает ошибку.

Мой код

try {
    File f = new File(file_name);
    f.createNewFile();
    //System.out.println("Hello");
    f.setWritable(true);
    FileWriter fstream = new FileWriter(f);
    BufferedWriter out = new BufferedWriter(fstream);
    ListIterator<String> itr = account.listIterator();//account is a List object
    while (itr.hasNext()) {
        String element = itr.next();
        out.write(element);
        out.newLine();
    }
    out.close();

} catch (IOException e) {
    e.printStackTrace();
}

Ошибка

java.io.IOException: A required privilege is not held by the client
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(Unknown Source)
at com.example.Test.main(Test.java:25)

Эта ошибка возникает только тогда, когда file_name равен C:\\Test.txt, но когда я изменяю это значение file_name на C:\\New Folder\\Test.txt (где New Folder - папка внутри диска C), тогда он работает нормально.

Почему мы не можем создать файл внутри диска C?

1 Ответ

6 голосов
/ 12 марта 2012

Начиная с Windows Vista, установка Windows по умолчанию не позволяет пользователям создавать файлы в корневом каталоге диска C: со стандартными привилегиями.Если вам нужно создать файл в корне диска, вам нужны права администратора и запускать приложение от имени администратора (или повысить привилегии администратора другим способом).

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