2017-08-02 255 views
0

我已經把一個程序,接受一個特定的URL,然後掃描一個特定的目錄命名的時間和日期,例如,說的url是'www.url.com' ,它將掃描該目錄'www.url.com/date &時間'。Java FileOutputStream返回0大小的文件

該鏈接不斷更新,隨機時間鏈接將被刪除,並被一個新的覆蓋,我的目標是掃描url下載目錄,然後再次掃描一個新的目錄來取代舊的一個並再次下載新文件。

while(numberofDownloads > 0){ 

     linkname = urlprint(url);//finds name of link (essentically the top half of the code in urldownload) 

     if(!linknameTemp.equals(linkname)){ 
      numberofDownloads--; 
      print("downloads left: " + numberofDownloads); 
      linkname = urlprint(url); 
      linknameTemp = linkname; 
      urldownload(url); 
     } 

    } 

這是當它檢測到URL目錄的變化,我在while循環中調用該函數,作品第一次那麼文件下載使用後的第一個0字節。

private static String urldownload(String url) throws FileNotFoundException, IOException { 

    Document doc = Jsoup.connect(url).get(); 
    Elements links = doc.select("a[href]"); 
    String linkname = ""; 

    for (Element link : links) { 

     String templinkname = trim(link.text(), 35); 

     if(Character.isDigit(templinkname.charAt(0))){ 
      linkname = trim(link.text(), 35); 
     }  

     //String linkname = trim(link.text(), 35); 
    } 

    String urlZip = (url + linkname + "urilist.zip");//file is always named urilist.zip 

    URL urldownload = new URL(urlZip); 

    print(linkname); 

    linkname = linkname.substring(0,linkname.length()-1); //remove last character '/' character to not confuse fileoutputstream 
    ReadableByteChannel rbc = Channels.newChannel(urldownload.openStream()); 
    FileOutputStream fos = new FileOutputStream(linkname+".zip");//rename file after directory 
    fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); 

    return null; 
} 

所以,當我運行的代碼在下載的第一個文件是完全正常的,但是接下來的文件(但是很多我的價值「numberofDownloads」)全部下載到我的項目目錄,但在0字節。

我該如何修改代碼以允許我檢查目錄的更新,然後在需要而無錯的情況下多次下載文件?

+1

您需要在FileOutputStream或通道上調用close()。 – wumpz

+0

我已添加'fos.close();'在urldownload結束之前null,但現在我得到的文件一半大小和損壞,我應該在哪裏調用它,或者我用它錯了? –

+0

然後你應該在頻道上使用close。 – wumpz

回答

0

能否請您檢查ZipOutputStream類,而不是FileOutputStream中可以幫助您解決一半,損壞的文件?

+0

什麼是ZipOutputStream?從我看到用戶使用它創建zip文件不下載它們 –

相關問題