2013-06-04 84 views
1

我需要你的幫助。我創建了以下代碼,用於存儲本地硬盤上某些網站的內容。 top_urls.txt包含大量的網站。如何存儲網站內容並將其命名爲自己的網址?

public static void main(String args[]) throws IOException 
{ 

BufferedReader input = new BufferedReader(new FileReader("top_urls.txt")); 

try { 

    String content = "contents_urls"; 
    int i=1; 

Scanner freader = new Scanner(input); 

while (freader.hasNextLine()) { 

     String url = freader.nextLine(); 
     System.out.println(url); 
     String out = new Scanner(new URL(url).openStream(), "UTF-8").useDelimiter("\\A").next(); 
     System.out.println(out); 
     String file_name = content +i; 
     PrintWriter pwout = new PrintWriter(new FileWriter ("site_"+ i+ ".txt",true)); 
     pwout.println(out);  

     i++; 
     } 
    freader.close(); 

    } catch (IOException ex) { 

    ex.printStackTrace(); 

} System.out.println("Done"); 

} 

所以,當一個網站的內容被存儲在文件被命名爲site_1.txt,site_2.txt等 我想存儲與網站名稱,例如內容文件。 www.google.com.txt等

我試過 PrintWriter pwout = new PrintWriter(new FileWriter (url+".txt",true));,但不起作用。 任何想法如何做到這一點? 在此先感謝

+3

你是什麼意思的「不工作」?這是正確的想法;所以告訴我們你遇到的實際問題是什麼,或者我們無法告訴你如何解決它。 –

+0

當txt附加了一個類似於http:// google.com的網址時,它不會形成有效的文件名。替換'/'和'。'與'_'和' - '或類似的東西 – sanbhat

+0

@HenryKeiter,代碼工作正常,但我想存儲內容像www.google.com.txt,而不是像site_1.txt。這就是我想要做的。謝謝 – Yon

回答

4

我會冒險猜測您的網址類似http://www.example.com/foo.html。我不認爲創建一個包含冒號的文件名可以在許多操作系統上工作(例如,在windows上它可能會嘗試將http解析爲驅動器盤符並失敗)。

在這種情況下,您需要決定如何讓上面的URL出現在文件名中,並相應地縮短它。這可能只是在http://前綴和下一個斜槓之間的域,或者它可能會用下劃線替換所有字母數字字符,或者完全替換其他字符。

+1

一個快速的解決辦法是隻替換所有非法字符:'PrintWriter pwout = new PrintWriter(new FileWriter(url.replaceAll(「[^ - \\ w。]」,「_」)+「。txt」,true) );' – DaoWen

+0

@Andrzej,謝謝,我會盡力去做你說的。 – Yon

+0

@DaoWen也謝謝。 – Yon

相關問題