2012-04-23 12 views
3

私は自分の決勝戦を勉強していますが、テキストファイルに行のデータを印刷する特別な方法があるのだろうかと思います。私は、テキストファイルに次のように持っていた場合、たとえば:行番号とテキストファイルJava

11 
1c20 
203 
G2 

私は203 G2 1c20出力を得るでしょう例2、4のための私は、入力方法がある場合、私は思っていました。 2つの整数の開始と終了を使用します。私はこの方法の研究をしていますが、何も見つけることができません。私はgetLineNumber()があることを理解していますが、私は2つの整数を使いたいです。

ありがとうございます!ここで

+0

これは非常に簡単です... – jahroy

答えて

3

は(ポインタ付き)オプションです:

  1. Read the inputsと二つの変数に格納しstartend
  2. BufferedReader#readLineを使用して、各ラインを読んで、各ライン
  3. するカウンタを増やす行した場合numberが範囲内にある場合は、行を出力します。
  4. カウンタがendに達すると、ループから壊れます。
2

あなたはjava.io.LineNumberReaderを見てすることがあります:行番号は0

で始めることhttp://docs.oracle.com/javase/6/docs/api/java/io/LineNumberReader.html

注意はこれを試してください:あなたのファイルを想定し

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

ありがとう、私はこれを見て、私はそれを見つけることができません便利 –

+0

上記のリビジョンを参照してください。 – cadizm

0

がありますdata.txtという名前のファイルでは、sedを使って次のように3行目から5行目を表示できます。

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

+0

あなたは私のテキストがjava.txtと呼ばれています。ありがとう –

+0

上記の例は、sedコマンドを使ってあなたが望むことをする方法の例です。ファイルのx行からy行を表示します。このコマンドの名前はsedです。 -nは、静かなモードを意味します。 3は開始行を表します。 5は終了行を表します。コンマは開始と終了の行を区切ります。 pは目的の操作(この場合はprint)を表します。 – jahroy

+0

sedコマンドを使用するには、linux、unix、またはMacを使用する必要があります。あなたが愚かな窓を使っているなら、Cygwinをインストールして、そうでなければ無駄な環境から逃れる必要があります。 – jahroy