J’ai recherché beaucoup de questions similaires, mais je n’ai pas pu résoudre mon problème.
J’essaie d’écrire quelque chose dans un fichier, ce qui me donne une erreur.
Mon code
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 itr = account.listIterator();//account is a List object while (itr.hasNext()) { Ssortingng element = itr.next(); out.write(element); out.newLine(); } out.close(); } catch (IOException e) { e.printStackTrace(); }
L’erreur est
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)
Cette erreur se produit uniquement lorsque file_name
est C:\\Test.txt
mais lorsque je change cette valeur file_name
en C:\\New Folder\\Test.txt
(où New Folder
est un dossier dans le lecteur C), cela fonctionne correctement.
Pourquoi ne pouvons-nous pas créer un fichier dans C Drive?
Depuis Windows Vista, la configuration par défaut de Windows ne permet pas aux utilisateurs de créer des fichiers à la racine du lecteur C: avec des privilèges standard. Si vous devez créer un fichier à la racine d’un disque, vous devez disposer des droits d’administrateur et exécuter l’application en tant qu’administrateur (ou élever les privilèges d’administrateur d’une autre manière).
L’archivage de compte d’utilisateur est important dans ce cas, ne jouez pas avec les lecteurs c et d font tout dans votre région