[問題] 有人遇過EOFException(寫網頁抓圖程式)

看板java作者 (小陳)時間13年前 (2012/11/27 21:47), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串1/1
下面這段函式用來抓取網頁的圖片, 剛開始測試一兩張抓取沒問題, 但是之後會出現EOFException的錯誤。 上網查詢聽說和Buffer設定有關, 不知道哪位高手可以解決? public static void downloadPic(String picUrl) { try { URL url = new URL(picUrl); URLConnection uc = url.openConnection(); DataInputStream dis = new DataInputStream(uc.getInputStream()); FileOutputStream fo = new FileOutputStream("D:\\test.jpg"); while (dis.available() != -1) // throws EOFException at ending stream. { fo.write(dis.readByte()); fo.flush(); } dis.close(); fo.close(); System.out.println("complete."); } catch (Exception e) { System.out.print(e);// handle here } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.157.8

11/27 22:11, , 1F
串流讀到EOF(檔案結尾)時就會這樣,有時候是串流忘記關等等
11/27 22:11, 1F

11/28 05:38, , 2F
available() 永遠不會return -1 你讀 stream 的方法錯了
11/28 05:38, 2F

11/28 09:20, , 3F
而且一次讀一個byte也太沒效率了吧,可以一次多讀一些
11/28 09:20, 3F
文章代碼(AID): #1GjCI8Sv (java)