2012-11-19 67 views
0

下面的代碼保存網頁內容到一個文件的名稱:保存文件與網站

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); 
       } 
     } 
} 

但我需要的文件具有相同的名稱作爲網站的頁面,例如,它必須以某種方式獲取網頁的名稱並將其指定爲文件的名稱。

+0

我還是新的,而且還是不明白這一點,你可以編寫代碼,我敢肯定,這很容易讓你 –

回答

2

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

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

需要注意的是不同的URL可能指向同一個文件: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. 關閉finally區塊中的資源。更好的是,如果您使用Java 7,請使用try-with-resources
+0

非常感謝你,可以插入,你有沒有在我的代碼 –

+0

什麼意見我認爲文本*「'lowerCase'而不是'UpperCase'」*應該刪除代碼塊(因爲這些詞不是代碼),而是指向[direct](http://en.wikipedia)。 org/wiki/Naming_convention_(編程)#Java)或[indirect](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html),[general](http://www.oracle.com) .com/technetwork/java/javase/documentation/codeconvtoc-136057.html)或[specific](http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html#367)Java代碼公約文件。 – XenoRo