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

Java 如何存储网站内容并用自己的url命名?,java,Java,我需要你的帮助。我创建了下面的代码,它将一些网站的内容存储在本地硬盘上。top_url.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

我需要你的帮助。我创建了下面的代码,它将一些网站的内容存储在本地硬盘上。top_url.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)),但不起作用。
有什么办法吗?

提前感谢

我猜您的URL类似于
http://www.example.com/foo.html
。我不认为在许多操作系统上创建包含冒号的文件名是可行的(例如,在windows上,它可能会尝试将
http
解析为驱动器号,然后失败)


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

我猜您的URL类似于
http://www.example.com/foo.html
。我不认为在许多操作系统上创建包含冒号的文件名是可行的(例如,在windows上,它可能会尝试将
http
解析为驱动器号,然后失败)


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

你说的“不工作”是什么意思?这是正确的想法;因此,请告诉我们您遇到的实际问题是什么,否则我们无法告诉您如何解决它http://google.com
当以txt追加时,不会形成有效的文件名。将“/”和“.”替换为“u”和“-”或类似的内容that@HenryKeiter,代码运行良好,但我想像www.google.com.txt那样存储内容,而不是像site_1.txt那样存储内容。这就是我想做的。Thanks@Yon你说,“我试过
PrintWriter pwout=new PrintWriter(new FileWriter(url+“.txt”,true));
,但不起作用。”你这是什么意思?确保你删除了斜杠和任何其他非法文件名字符,就像其他人建议的那样。@HenryKeiter是的,但我没有为斜杠做任何事情,我会尝试修复它并删除它们。你说的“不工作”是什么意思?这是正确的想法;因此,请告诉我们您遇到的实际问题是什么,否则我们无法告诉您如何解决它http://google.com当以txt追加时,不会形成有效的文件名。将“/”和“.”替换为“u”和“-”或类似的内容that@HenryKeiter,代码运行良好,但我想像www.google.com.txt那样存储内容,而不是像site_1.txt那样存储内容。这就是我想做的。Thanks@Yon你说,“我试过
PrintWriter pwout=new PrintWriter(new FileWriter(url+“.txt”,true));
,但不起作用。”你这是什么意思?确保你删除了斜杠和任何其他非法文件名字符,正如其他人所建议的那样。@HenryKeiter是的,但我没有对斜杠做任何事情,我会尝试修复并删除它们。快速修复方法是只替换所有非法字符:
PrintWriter pOut=new PrintWriter(new FileWriter(url.replaceAll([^-\\w.]),“\u0”)+“.txt”,正确)
@Andrzej,谢谢,我会按照你说的去做。一个快速的解决办法就是替换所有非法字符:
PrintWriter pwout=new PrintWriter(new FileWriter(url.replaceAll(“[^-\\w.]”,“”)+“.txt”,true))@Andrzej,谢谢,我会尽力按你说的做。