2012-04-23 18 views
3

我正在爲我的決賽學習,我想知道是否有一種打印文本文件中某一行數據的特殊方式。例如,如果我有一個文本文件中的以下內容:行號和文本文件Java

11 
1c20 
203 
G2 

我想知道是否有一種方法,我例如2,4輸入我會得到一個輸出1C20 203 G2。通過使用兩個整數開始和結束。我有這方法的研究,但無法找到任何東西。我知道有一個是getLineNumber(),但我想使用兩個整數。

在此先感謝!

+0

這會很容易與sed ... – jahroy 2012-04-23 18:50:49

回答

3

下面是一個選項(使用指針):

  1. Read the inputs,並將它們存儲在兩個變量startend
  2. 閱讀使用BufferedReader#readLine每一行,增加櫃檯的每一行
  3. 如果線路數字在範圍內,打印行。
  4. 當計數器達到end時,從循環中斷開。
2

你可能想看看java.io.LineNumberReader中:http://docs.oracle.com/javase/6/docs/api/java/io/LineNumberReader.html

注意,行號從0開始

試試這個:

import java.io.*; 

/* 
* Usage: java LinePrinter <start> <end> 
* Example: java LinePrinter 2 4 
*/ 
public class LinePrinter 
{ 
    public static void main(String[] args) 
    { 
     int start = Integer.parseInt(args[0]); 
     int end = Integer.parseInt(args[1]); 

     LineNumberReader reader = null; 
     String line = null; 
     boolean flag = false; 

     try 
     { 
      reader = new LineNumberReader(new FileReader("data.txt")); 

      while ((line = reader.readLine()) != null) 
      { 
       if (reader.getLineNumber() == start) 
       { 
        flag = true; 
       } 

       if (flag) 
       { 
        System.out.println(line); 
       } 

       if (reader.getLineNumber() == end) 
       { 
        flag = false; 
        break; 
       } 
      } 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

謝謝,我已經看了這個,我找不到它方便 – 2012-04-23 18:52:05

+0

看到上面的修訂。 – cadizm 2012-04-23 21:28:52

0

假設你的文件命名爲data.txt,您可以使用sed來顯示第3至第5行,如下所示:

$> sed -n'3,5p'data.txt

+0

你可以展開請和是我的文本被稱爲java.txt謝謝 – 2012-04-23 19:09:42

+0

以上是如何使用sed命令做你想做的事情的一個例子:打印文件的行x通過y。該命令被命名爲sed。 -n表示安靜模式。 3代表起跑線。 5代表結束線。逗號分隔開始和結束行。 p表示所需的操作,在這種情況下是打印。 – jahroy 2012-04-23 19:23:09

+0

爲了使用sed命令,您必須使用linux,unix或Mac。如果你在傻窗口,你必須安裝Cygwin來逃避你無用的環境。 – jahroy 2012-04-23 19:26:49