2013-11-14 290 views
0

...網絡爬蟲的Java

public static void download() { 
      try { 
       URL oracle = new URL("http://api.wunderground.com/api/54f05b23fd8fd4b0/geolookup/conditions/forecast/q/US/CO/Denver.json"); 
       BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream())); 

       File file = new File("C:\\Users\\User\\Desktop\\test2.json"); 
       if (!file.exists()) { 
        file.createNewFile(); 
       } 
       FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
      BufferedWriter bw = new BufferedWriter(fw); 

       String inputLine; 
       while ((inputLine = in.readLine()) != null) { 
        bw.write(inputLine+"\n"); 
       } 
       fw.close(); 
       in.close(); 
       System.out.println("Finished..."); 
      } 
      catch(MalformedURLException e){e.printStackTrace();} 
      catch(IOException e){e.printStackTrace();} 
     } 

我正在做一個網絡爬蟲從Wunderground獲取天氣信息。我確實得到了這個工作,但它不解析整個文檔(最後一位的剪切)。我做錯了什麼?

+1

沖洗你的'bw'。 –

+1

更好地關閉你的'bw'。 –

+0

@SotiriosDelimanolis哈哈感謝:/,它現在可以工作 – Arc

回答

1

您有BufferedWriter

FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
BufferedWriter bw = new BufferedWriter(fw); 

包裹你的FileWriter,但只有在關閉FileWriter

fw.close(); 

由於FileWriter不能訪問,不知道該BufferedWriter,它贏得不要刷新任何可能的剩餘緩衝區。您可以致電flush()或致電bw或致電bw而不是fw。致電bw.close()將負責關閉包裹的FileWriter

bw.close(); 
in.close(); 
+0

謝謝,有點從你的其他評論中計算出來,但是謝謝:) – Arc