Java 无法删除文件,但写入程序已关闭
这是我在文件中编写的代码Java 无法删除文件,但写入程序已关闭,java,file,bufferedwriter,Java,File,Bufferedwriter,这是我在文件中编写的代码 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 != nu
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();
}
这是我的代码,先删除文件,然后删除目录:
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 );
}
File[]arrFiles=fileTagpath.listFiles();
对于(文件fileCurrentFile:arrFiles)
{
如果(!fileCurrentFile.delete())
{
String strMessage=“文件尚未删除。”;
System.out.println(strMessage);
失败(strMessage);
}
}
如果(!fileTagpath.delete())
{
String strMessage=“尚未删除目录。”;
System.out.println(strMessage);
失败(strMessage);
}
它失败,并显示文件尚未删除的消息。输出显示正确的文件和正确的目录。如果我把路径复制到我的浏览器窗口,我会找到正确的文件。文件路径在下面
C:\Users\xxx\AppData\Local\Temp\tag
我的错误是什么?在java中,如果您想使用反斜杠。像这样试试 您的路径:C:\Users\xxx\AppData\Local\Temp\tag 但是,您必须始终使用双反斜杠,如下所示:
C:\\Users\\xxx\\AppData\\Local\\Temp\\tag如下更改路径:C:\\Users\\xxx\\AppData\\Local\\Temp\\tag
buf
在测试时不可能为null
,也不可能为osw
或fos
。buf.close()
之后的close()
调用都不是必需的,而且buf.flush()
也不是必需的。不要编写无意义的代码。@Ganymed如果您发布的代码确实创建了要删除的文件,并且在您从File.listFiles()
派生路径名时,我看不出这有可能解决您的问题。除非出于某些未说明的原因,fileTag
不是从fileTAGpath`派生的。