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