问题描述
@H_403_0@这是Java中的错误。是的,它很少出现,但是它们存在;)您可以在之后加上outFile.close()
outFile = null;
System.gc();
@H_403_0@然后尝试将其删除。如果这不起作用,还有更多的可能性。让我知道。
@H_403_0@
@H_403_0@对我来说,它有效:
public class FileDeleteExample {
public static void main(String[] args) throws Exception {
File f = new File("test.txt");
FileOutputStream outFile = null;
try {
outFile = new FileOutputStream(f);
outFile.write("Test".getBytes());
} finally {
outFile.flush();
outFile.close();
outFile = null;
System.gc();
}
f.delete();
}
}
@H_403_0@
@H_403_0@我以删除行的示例Sumit Singh进行了尝试outFile=null;
System.gc;
,这对我也很有效。因此不应有问题FileOutputStream
。您能否尝试上面的小示例并说出它是否有效?
@H_403_0@
void closeQuietly(FileOutputStream out) {
try { out.flush(); out.close(); } catch(Exception e) {}
}
@H_403_0@现在只需调用该finally
块中的方法即可!解决方法
我目前在Java代码中遇到FileOutputStream的问题。
实际上,我正在使用FileOutputStream创建文件,但是一旦创建了文件,就无法删除它。据我了解,这可能来自FileOutputstream没有关闭的事实。
在下面的摘要代码中:
outFile = new FileOutputStream(dir+"\\"+fileName);
outFile.write("Test");
outFile.flush();
outFile.close();
outFile = null;
System.gc();
这样就无法删除文件,即使是“手动”也是如此。启动程序时,无法通过简单的del在Windows上将其删除。我还尝试使用以下代码删除文件夹 dir的
内容,但该方法均无效:
static public void delDir( String place )
{
File path = new File( place );
System.out.println(path.exists());//return true
if( path.exists() )
{
File[] f = path.listFiles();
for( int j = 0 ; j < f.length ; j++ )
{
if( f[ j ].isDirectory() )
{
deleteDirectory( path+"\\"+f[ j ] );
}
f[ j ].delete();
}
}
}
所以我的问题是: 如何关闭该文件以进行下一个删除(或者如果我们无法关闭它,如何正确删除它)?