替代Java 6中的文件#copy()

Alternative to Files#copy() in Java 6

本问题已经有最佳答案,请猛点这里访问。

这就是我的代码,它已经开始工作了:

1
2
3
4
5
6
7
8
9
10
11
12
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();
    }
}

但是,我必须使用JDK1.6来实现这一点。

拷贝只在Java 1.7中可用。

有什么建议吗?


您可以使用apache commons ioutils。

1
IOUtils.copy(InputStream input, OutputStream output)

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

因为用JDK方法做这件事是不容易的,你可以使用JakartaCommons IO中的ioutils,它还有很多其他有用的东西。

1
IOUtils.copy(inputStream, outputStream);

或者使用guava的bytestreams.copy()可以实现相同的功能。

1
ByteStreams.copy(inputStream, outputStream);