我想从方法返回文件(读取或加载),然后删除该文件。
public File method() {
File f = loadFile();
f.delete();
return f;
}
但是当我删除文件时,我将其从磁盘中删除,然后在返回语句中仅存在对不存在文件的描述符。那么最有效的方法是什么。
最佳答案
你不能保留已删除文件的文件句柄,而是可以暂时将数据保留在字节数组中,删除文件然后返回字节数组
public byte[] method() {
File f =loadFile();
FileInputStream fis = new FileInputStream(f);
byte[] data = new byte[fis.available()];
fis.read(data);
f.delete();
return data;
}
//编辑方法2
FileInputStream input = new FileInputStream(f);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int bytesRead = input.read(buf);
while (bytesRead != -1) {
baos.write(buf, 0, bytesRead);
bytesRead = input.read(buf);
}
baos.flush();
byte[] bytes = baos.toByteArray();
您可以从字节数组构造文件数据
但是,我的建议是使用 Jakarta commons 中的 IOUtils.toByteArray(InputStream input) ,为什么已经在盘子里了还要重新写
关于java - 如何返回和删除文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20474970/