2016-04-14 37 views
0

我是一位年輕的和新的開發人員,我從未使用過Java servlet。 我有一個HTTP URL,讓我下載一個.txt文件(例如:http://textfiles.com/100/914bbs.txt如何使用我的servlet從http URL下載和讀取.txt文件

所以我建立了一個Java servlet由我所看到的其他帖子的啓發。我的目標是下載並閱讀這個.txt文件。 我想把這個下載的文件放在我的「data.txt」中。

的ServletDownload類:

public class ServletDownload extends HttpServlet { 
    private static final int BYTES_DOWNLOAD = 1024; 

    public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws IOException { 
     response.setContentType("text/plain"); 
     response.setHeader("Content-Disposition", 
       "attachment;filename=downloadname.txt"); 
     ServletContext ctx = getServletContext(); 
     InputStream is = ctx.getResourceAsStream("Donnees/data.txt"); 

     int read = 0; 
     byte[] bytes = new byte[BYTES_DOWNLOAD]; 
     OutputStream os = response.getOutputStream(); 

     while ((read = is.read(bytes)) != -1) { 
      os.write(bytes, 0, read); 
     } 
     os.flush(); 
     os.close(); 
    } 
} 

現在我不知道如果我的代碼是做得很好,如何與我的網址使用它呢?

回答

-1

代碼的結束可能是類似的東西(與嘗試,與資源語句來正確地關閉流):

try (InputStream is = new URL("http://textfiles.com/100/914bbs.txt").openStream(); 
    OutputStream os = response.getOutputStream()) { 

    int read = 0; 
    byte[] bytes = new byte[BYTES_DOWNLOAD]; 

    while ((read = is.read(bytes)) != -1) { 
     os.write(bytes, 0, read); 
    } 
    os.flush(); 
} 
+0

謝謝! 另一個問題,現在我有這個servlet,我怎麼能在另一個類中調用doGet方法? 準確地說,我如何在另一個類中初始化「請求」和「響應」? – Vincent

+0

爲什麼你需要這樣做? –

+0

如果您需要能夠在其他地方執行相同的操作,請考慮提取要在實用程序類中重用的代碼部分,並從不同的類中調用相關的實用程序方法。 –