java - 如何返回和删除文件?

标签 java java-io

我想从方法返回文件(读取或加载),然后删除该文件。

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/

相关文章:

java - Spring boot 2通过Apache Camel连接到rabbitmq

java - 网络主线程异常

java - JEE : how to pass parameter to an interceptor

java - Java中获取文件所在驱动器的最佳方法是什么?

java - 如果使用文件则暂停 Java 的执行

java - 如何调用tick()方法

java - 用于由 boolean 标志驱动的 Java 方法的 Junit

java - 使用扫描仪读取文本文件并使用列表进行打印

java - 使用java.io.package/如何从变量读取数据并将其存储在文件中?

java - 流标记器、空格