Я хочу прочитать текстовый файл, разделить его и сохранить результаты в массиве

#java

#java

Вопрос:

У меня есть текстовый файл, в котором есть 10 полей (столбцов), каждое из которых разделено табуляцией.И у меня есть несколько таких строк.Я хочу прочитать текстовый файл, разделить его для каждого столбца, используя разделитель «табуляция», а затем сохранить его в массиве из 10 столбцов и неограниченного количества строк.Можно ли это сделать?

Комментарии:

1. Да — в качестве ответа на ваш вопрос. Взгляните на библиотеки синтаксического анализатора CSV в качестве подсказки для вашего домашнего задания.

2. Ну, если они просят об этом, это, вероятно, потому, что да, это можно сделать.

Ответ №1:

В массиве не может быть «неограниченного количества строк» — вы должны указать количество элементов при построении. Возможно, вы захотите использовать вместо List некоторого описания, например ArrayList .

Что касается чтения и синтаксического анализа, я бы предложил использовать Guava, в частности:

(Это позволяет вам разделять строки по ходу работы … в качестве альтернативы вы могли бы использовать Files.readLines для получения List<String> , а затем обработать этот список отдельно, снова используя Splitter .)

Комментарии:

1. Это результат, который я получаю-Metrix. ArrayList@19821f, как я могу получить строки и столбцы в моем текстовом файле после разделения?

2. @Pratik: Трудно сказать, не видя вашего кода… но если у вас есть список, и каждый элемент списка является массивом, вы должны сделать list.get(row)[column] , чтобы получить определенную строку / столбец.

3. BufferedReader buf = новый BufferedReader(новый FileReader(«C:/Documents и Settings/sg0209222/Desktop/metrices/11.3.txt «)); String line = null; ArrayList<Строка[]> строки = новый ArrayList<Строка[]>(); while((строка=buf.readLine())!=null) { Строка[] строка = строка.split(«t»); строки.add(строка); } System.out.println(строки.toString()); // строки — это список

4. @Pratik: Если это выводится на печать Metrix.ArrayList , это говорит о том, что вы не используете встроенный Java ArrayList. Почему?

Ответ №2:

 BufferedReader buf = new BufferedReader(new FileReader(fileName));
String line = null;
List<String[]> rows = new ArrayList<String[]>();
while((line=buf.readLine())!=null) {
   String[] row = line.split("t");
   rows.add(row);
}
System.out.println(rows.toString()); // rows is a List

// use rows.toArray(...) to convert to array if necessary
  

Комментарии:

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

2. Зачем усложнять такой тривиальный пример подобными вопросами? Скорее всего, это проблема домашнего задания, и он, вероятно, будет тестировать что-то, созданное в notepad.exe … Я отвлекся. Хороший улов, мистер Скит!

Ответ №3:

Вот простой способ загрузить текстовый файл и сохранить его в массив на заданное количество строк.

 import java.io.*;


public class TestPrograms {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    String conent = new String("da");
    String[] daf = new String[5];//the intiger is the number of lines  1 to
// account for the empty line.
    try{
    String fileName = "Filepath you have to the file";
File file2 = new File(fileName);
    FileInputStream fstream = new FileInputStream(file2);
    BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
    int i = 1;
      while((conent = br.readLine()) != null) {

        daf[i] = conent;
        i  ;
    }br.close();
      System.out.println(daf[1]);
      System.out.println(daf[2]);
      System.out.println(daf[3]);
      System.out.println(daf[4]);
    }catch(IOException ioe){
        System.out.print(ioe);
    }

}
}