2016-04-04 85 views
-1

文件副本#(),所以這是代碼我有,它已經工作:替代Java 6中

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。

有什麼建議嗎?

+0

順便說一句,response.flushBuffer()是完全沒有必要的。 – BalusC

回答

1

您可以使用Apache commons IOutils。

IOUtils.copy(InputStream input, OutputStream output) 
1

Java 6未附帶任何現成的make文件複製功能,您必須手動創建文件複製過程。要複製文件,只需使用FileInputStream將文件轉換爲字節流,然後使用FileOutputStream將字節寫入另一個文件。

由於使用JDK方法無法做到這一點,您可以使用來自Jakarta Commons IO的IOUtils,它也有很多其他有用的東西。

IOUtils.copy(inputStream, outputStream); 

否則使用Guava's ByteStreams.copy(),您可以實現相同的功能。

ByteStreams.copy(inputStream, outputStream);