使用站点名称保存文件

时间:2012-11-19 14:19:38

标签: java file-io web-scraping

以下代码将页面内容保存到文件中:

import java.net.*;
import java.io.*;



public class url
{
      public static void main(String[] args)
      {
           try
                  {
                    URL PageUrl;
                    URLConnection GetConn = null;
                    GetConn = null;

                     PageUrl = new URL("https://www.google.ru/");
                     GetConn = PageUrl.openConnection();

                    GetConn.connect();

                    InputStreamReader ReadIn = new InputStreamReader(GetConn.getInputStream());
                    BufferedReader BufData = new BufferedReader(ReadIn);
                    String htmlFileName = ("C:\\hello.html");
                    FileWriter FWriter = new FileWriter(htmlFileName);
                    BufferedWriter BWriter = new BufferedWriter(FWriter);
                    String UrlData = null;
                    while ((UrlData = BufData.readLine()) != null)
                    {
                          BWriter.write(UrlData);
                          BWriter.newLine();
                    }
                    BWriter.close();
              }
              catch(IOException io)
              {
                   System.out.println(io);
              }
      }
} 

但我需要该文件与网站页面的名称相同,例如,它必须以某种方式获取网页的名称并将其指定为文件的名称。

1 个答案:

答案 0 :(得分:2)

您可以使用URL.getFile()获取文件名。即

...
String htmlFileName = PageURL.getFile();
...

请注意,不同的网址可能会引用同一个文件:http://example.com/test.html#anch1http://example.com/test.htmlhttp://example.com/test.html?a=b - 这三个网址都指向同一个test.html文件。在这种情况下,您可能希望以某种方式合并getFile()getRef()getQuery()

值得一提的是代码中的一些问题:

  1. 使用lowerCase而非UpperCase;
  2. 启动变量名称
  3. 关闭finally块中的资源。更好的是,如果您使用Java 7,请使用try-with-resources