2012-04-23 2 views
3

Я изучаю свои финал, и мне интересно, есть ли способ распечатать данные строки в текстовом файле. например, если я имел следующее в текстовом файле:Номера строк и текстовые файлы Java

11 
1c20 
203 
G2 

мне было интересно, если есть способ, где вход, например, 2, 4 я бы получить выходное 1c20 203 G2. используя два целых начала и конца. У меня есть исследования для этого метода, но я не могу ничего найти. Я понимаю, что есть getLineNumber(), но я хочу использовать два целых числа.

Заранее благодарен!

+0

Это было бы очень легко с sed ... – jahroy

ответ

3

Вот вариант (с указателями):

  1. Read the inputs и хранить их в двух переменных start и end
  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

Спасибо, я посмотрел на это, и я не нашел его Удобно –

+0

См. Ревизию выше. – cadizm

0

Предполагая, что ваш файл named data.txt, вы можете использовать sed для отображения строк с 3 по 5 следующим образом:

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

+0

Можете ли вы развернуть пожалуйста и да, мой текст называется java.txt thanks –

+0

Вышеприведенный пример использования команды sed для выполнения того, что вы хотите: напечатать строки x через y файла. Команда называется sed. -n означает тихий режим. 3 представляет стартовую линию. 5 представляет собой конечную линию. Запятая разделяет начальную и конечную линии. P представляет желаемую операцию, в этом случае печать. – jahroy

+0

Чтобы использовать команду sed, вам нужно использовать Linux, Unix или Mac. Если вы находитесь в глупых окнах, вам нужно установить Cygwin, чтобы избежать ненужной вам среды. – jahroy