我需要你的帮助。我创建了下面的代码,它存储了本地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) );
,但不起作用。
任何想法如何做到这一点?
提前致谢
答案 0 :(得分:4)
我猜你的网址类似于http://www.example.com/foo.html
。我不认为创建包含冒号的文件名将在许多操作系统上起作用(在Windows上,它可能会尝试将http
解析为驱动器号并且例如失败)。
在这种情况下,您需要决定如何将上述URL显示在文件名中,并相应地缩短它。这可能只是在http://
前缀和下一个斜杠之间使用域,或者它可能正在用下划线替换所有字母数字字符,或者完全替换其他字符。