2016-11-25 117 views
0

考慮以下閱讀txt文件的在線

代碼

private String url = "https://celestrak.com/NORAD/elements/resource.txt"; 

    @Override 
    public Boolean crawl() { 

     try { 

      // Timeout is set to 20s 
      Connection connection = Jsoup.connect(url).userAgent(USER_AGENT).timeout(20 * 1000); 
      Document htmlDocument = connection.get(); 
      // 200 is the HTTP OK status code 
      if (connection.response().statusCode() == 200) { 
       System.out.println("\n**Visiting** Received web page at " + url); 
      } else { 
       System.out.println("\n**Failure** Web page not recieved at " + url); 
       return Boolean.FALSE; 
      } 
      if (!connection.response().contentType().contains("text/plain")) { 
       System.out.println("**Failure** Retrieved something other than plain text"); 
       return Boolean.FALSE; 
      } 

      System.out.println(htmlDocument.text()); // Here it print whole text file in one line 

     } catch (IOException ioe) { 
      // We were not successful in our HTTP request 
      System.err.println(ioe); 
      return Boolean.FALSE; 
     } 

     return Boolean.TRUE; 
    } 

輸出

SCD 1 1 22490U 93009B 16329.83043855 .00000228 00000-0 12801-4 0 9993 2 22490 24.9691 122.2579 0043025 337.9285 169.5838 14.44465946256021 TECHSAT 1B (GO-32) 1 25397U .... 

我想讀的在線TXT文件(從https://celestrak.com/NORAD/elements/resource.txt)。問題是,當我打印或保存正文的文本時,它會在一行中打印整個在線文本文件。但我想把它看作\n分開,這樣我就可以逐行讀取它。我在閱讀online-txt文件時犯了錯誤嗎?

我正在使用JSoup。

+0

請告訴我們您正在使用的'Document'物體包。我們需要知道'text()'的行爲。 –

+0

@RogerNg我正在使用'jsoup'。 – Junaid

回答

1

你可以不用通過以下方式使用jsoup:

public static void main(String[] args) { 
    String data; 
    try { 
     data = IOUtils.toString(new URL("https://celestrak.com/NORAD/elements/resource.txt")); 
     for (String line : data.split("\n")) { 
      System.out.println(line); 
     } 
    } catch (IOException e1) { 
     e1.printStackTrace(); 
    } 
} 

上面的代碼使用org.apache.commons.io.IOUtils

如果加上公共圖書館是一個問題你可以使用下面的代碼:

public static void main(String[] args) { 
     URLReader reader; 
     try { 
      reader = new URLReader(new URL("https://celestrak.com/NORAD/elements/resource.txt")); 
     BufferedReader bufferedReader = new BufferedReader(reader); 
     String sCurrentLine; 
     while ((sCurrentLine = bufferedReader.readLine()) != null) { 
      System.out.println(sCurrentLine); 
     } 
     bufferedReader.close(); 
    } catch (MalformedURLException e1) { 
     e1.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

是的。得到它了。 (y) – Junaid

+0

@Junaid是否解決了您的問題?我已經更新了我的答案以包含不同的方法 – Abhishek

+0

第一個解決方案如何工作?它是否在'data'字符串中嵌入了'\ n'? –

0

由於文件已經由行分隔符分隔,所以我們可以簡單地進行輸入從URL流中讀取內容

String url = "https://celestrak.com/NORAD/elements/resource.txt"; 
    List<String> text = new BufferedReader(new InputStreamReader(new URL(url).openStream())).lines().collect(Collectors.toList()); 

要轉換爲字符串

String content = new BufferedReader(new InputStreamReader(new URL(url).openStream())).lines() 
      .collect(Collectors.joining(System.getProperty("line.separator")));