Отображение первой и последней строк текстового файла? - PullRequest
1 голос
/ 10 апреля 2011

У меня есть программа с графическим интерфейсом, которую я использую для навигации по текстовому файлу.В этом нет ничего сложного, просто возможность просмотреть файл и добавить в него новую информацию.Однако я также хотел бы иметь возможность идентифицировать первую строку в текстовом файле, а также последнюю.В основном, если у меня есть текстовый файл, который выглядит следующим образом:

  • California, West, 1981, 115, 25.99
  • New York, East, 1991, 120, 19.95

Я бы хотел, чтобы при нажатии кнопки произнесено первое - появляется текст California, обозначающий первую строку в тексте.Но я просто хочу, чтобы Калифорния отображала, а не остальную информацию в первой строке.Я хочу сделать это для последней строки, в том же стиле.

Я использую FileReader и FileBuffer со StringTokenizer.Есть ли способ просто вызвать первый токен первой строки и первый токен последней строки?Спасибо за помощь!

Ответы [ 4 ]

3 голосов
/ 10 апреля 2011

чтобы получить первый токен строки, который вы можете сделать

String line = "California, West, 1981, 115, 25.99"
String firstToken = line.split(",")[0]

, чтобы получить последнюю строку, я бы перебрал весь файл и сохранил бы его в списке и получил бы последний элемент, что-то вроде:

String line ="";
List<String> list = new ArrayList<String>();
          while((line = fileReader.readLine())!= null){
                 list.add(line)
         }
 list.get(0) // first line
 list.get(list.size()-1) // last line
1 голос
/ 11 апреля 2011

Предоставленные ответы должны хорошо работать в большинстве (подавляющем большинстве) ситуаций. Но для действительно огромных входных файлов, возможно, имеет смысл использовать другой подход с использованием RandomAccessFile (RAF).

Используя RAF, читайте первые байты до появления символа новой строки (для первой строки), затем ищите назад от конца RAF, чтобы найти последнюю новую строку, и читайте оттуда до конца (для последняя строка).

Еще проще, если строки имеют фиксированную ширину столбца (FCW), но это данные CSV. Для FCW вы можете вычислить , где начнется последняя строка, зная размер файла и ширину (длину) строки, и перейти непосредственно к этой точке.

0 голосов
/ 11 апреля 2011

Нет ли способа прочитать его из текстового файла?

Если промежуточные строки не имеют значения, вы можете прочитать первую строку и отсканировать до последней, без необходимости накапливатьколлекция.

import java.io.BufferedReader;
import java.io.FileReader;

/** @see http://stackoverflow.com/questions/5614004 */
public class FirstLastTest {

    private static String first, last, line;

    public static void main(String[] args) throws Exception {
        BufferedReader in = new BufferedReader(new FileReader(args[0]));
        first = in.readLine();
        while ((line = in.readLine()) != null) {
            if (line != null) {
                last = line;
            }
        }
        System.out.println(first + "\n" + last);
    }
}
0 голосов
/ 10 апреля 2011

Пример, как найти нужную строку

Чтение файла с помощью потокового считывателя

  streamreader sr=new streamreader("Your.txt");
  while(sr.peek()>=0)
  {
     string strLine=sr.readLine();
      if(strline.startswith("California"))
      {
         //Dispaly it
       }
          if(strline.startswith("NewYork"))
          {
             //Display it
          }
    }
...