如何存储网站内容并使用自己的网址命名?

时间:2013-06-04 16:39:32

标签: java

我需要你的帮助。我创建了下面的代码,它存储了本地hdd上某些网站的内容。 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) );,但不起作用。 任何想法如何做到这一点? 提前致谢

1 个答案:

答案 0 :(得分:4)

我猜你的网址类似于http://www.example.com/foo.html。我不认为创建包含冒号的文件名将在许多操作系统上起作用(在Windows上,它可能会尝试将http解析为驱动器号并且例如失败)。

在这种情况下,您需要决定如何将上述URL显示在文件名中,并相应地缩短它。这可能只是在http://前缀和下一个斜杠之间使用域,或者它可能正在用下划线替换所有字母数字字符,或者完全替换其他字符。