2016-11-25 120 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")));