Java 6 中 Files#copy() 的替代方法 [重复]
Posted
技术标签:
【中文标题】Java 6 中 Files#copy() 的替代方法 [重复]【英文标题】:Alternative to Files#copy() in Java 6 [duplicate] 【发布时间】: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() 是完全没有必要的。 【参考方案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);
【讨论】:
以上是关于Java 6 中 Files#copy() 的替代方法 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
强制停止在外部线程上运行的 Java Files.copy()
来自 Java NIO2 中的临时文件的 Files.copy 上的 AccessDeniedException
STM32CubeMX生产代码一直卡在copy libraries files的原因
打开eclipse后显示Error: could not open `C:\Program Files\Java\jdk1.6.0-11\lib\i386