我正在尝试从本地存储的文件中检索视频流。在读入输入流后,我试图删除该文件,但它不允许这种情况发生。我知道我需要关闭流,但我需要将此流传递给Web服务器调用。关于如何最好地解决这个问题的任何想法:
InputStream is = new FileInputStream("\\Location\\file.txt");
File f = new File("\\Location\\file.txt");
if(f.delete()) {
System.out.println("success");
} else {
System.out.println("failure");
}
答案 0 :(得分:2)
在Finally块上尝试删除
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
class DeleteFile extends FileInputStream {
File file;
public DeleteFile(String s) throws FileNotFoundException {
this(new File(s));
}
public DeleteFile(File file) throws FileNotFoundException {
super(file);
this.file = file;
}
public void close() throws IOException {
try {
super.close();
} finally {
if (file != null) {
file.delete();
file = null;
}
}
}
}
答案 1 :(得分:1)
以下是您的构造函数委托给的构造函数FileInputStream(File file)
中发生的事情:
public FileInputStream(File file) throws FileNotFoundException {
//some checks of file objects omitted here
fd = new FileDescriptor();
fd.attach(this);
open(name); //native method opening the file for reading
}
调用FileInputStream.close()
会释放在构造函数中创建的文件描述符,并调用native方法来关闭打开的文件。
致电close()
后,您将可以删除该文件。
请参阅source here。