【问题标题】:Alternative to Files#copy() in Java 6 [duplicate]Java 6 中 Files#copy() 的替代方法 [重复]
【发布时间】:2016-07-23 14:57:44
【问题描述】:

所以这是我的代码,它已经可以工作了:

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse response) throws Exception {
        String pathToFile = "myimage.jpg";
        File file = new File(pathToFile);
        response.setHeader("Content-Type", "image/jpeg");
        response.setHeader("Content-Length", String.valueOf(file.length()));
        response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");
        Files.copy(file.toPath(), response.getOutputStream());
        response.flushBuffer();
    }
}

但是,我必须使用 JDK 1.6 来完成这项工作。

Files.copy 仅适用于 Java 1.7。

有什么建议吗?

【问题讨论】:

  • 顺便说一句,response.flushBuffer() 是完全没有必要的。

标签: java file-io


【解决方案1】:

您可以使用 Apache commons IOutils。

IOUtils.copy(InputStream input, OutputStream output)

【讨论】:

    【解决方案2】:

    Java 6 没有自带任何现成的文件复制功能,您必须手动创建文件复制过程。要复制文件,只需使用 FileInputStream 将文件转换为字节流,然后使用 FileOutputStream 将字节写入另一个文件。

    由于无法使用 JDK 方法更轻松地做到这一点。您可以使用 Apache Commons IO 中的 IOUtils,它还有很多其他有用的东西。

    IOUtils.copy(inputStream, outputStream);
    

    或者使用Guava'sByteStreams.copy() 可以实现相同的功能。

    ByteStreams.copy(inputStream, outputStream);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-09
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多