2016-12-23 2 views
0

Ceci est mon code écrit dans un fichier ..Impossible de supprimer le fichier mais les auteurs sont fermés

FileOutputStream fos = new FileOutputStream(fileTAG, true); 
OutputStreamWriter osw = new OutputStreamWriter(fos, strFileEncoding); 
buf = new BufferedWriter(osw); 
buf.write(strTagStream); 
buf.newLine(); 
buf.flush(); 
if (buf != null) 
{ 
    buf.close(); 
} 
if (osw != null) 
{ 
    osw.close(); 
} 
if (fos != null) 
{ 
    fos.close(); 
} 

Ceci est mon premier code de supprimer les fichiers et supprimer ensuite le répertoire:

File[] arrFiles = fileTagpath.listFiles(); 
for (File fileCurrentFile : arrFiles) 
{ 
    if (!fileCurrentFile.delete()) 
    { 
     String strMessage = "File <" + fileCurrentFile.getAbsolutePath() + "> has not been deleted."; 
     System.out.println(strMessage); 
     fail(strMessage); 
    } 
} 
if (!fileTagpath.delete()) 
{ 
    String strMessage = "Directory <" + fileTagpath.getAbsolutePath() + "> has not been deleted."; 
    System.out.println(strMessage); 
    fail(strMessage); 
} 

Il échoue avec le message que le fichier n'a pas été supprimé. La sortie affiche le bon fichier et le bon répertoire. Si je copie le chemin vers la fenêtre de mon explorateur, j'arrive au bon fichier. Le chemin des fichiers est sous

C:\Users\xxx\AppData\Local\Temp\tag

Quel est mon erreur?

+0

Modifiez votre chemin comme ceci: C: \\ Utilisateurs \\ xxx \\ AppData \\ Local \\ Temp \\ tag – ThanhLD

+0

'buf' ne peut pas être 'null' au moment où vous le testez, ni 'osw' ou' fos'. Aucun des appels 'close()' après 'buf.close()' n'est nécessaire, pas plus que buf.flush() '. N'écrivez pas de code inutile. – EJP

Répondre

-1

En Java si vous souhaitez utiliser la barre oblique inverse. Essayez comme ça

Votre chemin: C: \ Users \ xxx \ AppData \ Local \ Temp \ tag

mais vous devez toujours suivre deux backslash ci-dessous:

C: \\ Utilisateurs \\ xxx \\ AppData \\ Local \\ Temp \\ tag

+0

@Ganymed Si le code que vous avez posté crée vraiment les fichiers que vous êtes en train de supprimer, et comme vous dérivez les noms de chemins depuis 'File.listFiles()', je ne vois pas comment cela pourrait résoudre votre problème. Sauf pour une raison non spécifiée 'fileTag' n'est pas dérivé de fileTAGpath'. – EJP