Java читать в текстовом файле, а затем разделить на отдельные массивы
У меня есть текстовый файл, который читается в. Он имеет разделители, которые <.>
, Есть основная тема, тогда есть три абзаца. Допустим title
, section1
, section2
, section3
, а затем следующая статья.
Как я могу сохранить данные так, чтобы ArrayList one имел все заголовки, ArrayList 2 имел всю информацию section1 и т. Д.? Я хочу быть в состоянии вывести эти массивы.
Например:
Большой шторм на своем пути.
о большом шторме
статика на штормах
выводы о штормах
В приведенном выше примере показано, как будет выглядеть одна запись.
public void read()
{
try
{
FileReader fr = new FileReader(file_path);
BufferedReader br = new BufferedReader(fr);
String s = "";
// keep going untill there is no input left and then exit
while((s = br.readLine()) != null)
{ }
fr.close();
}
catch (Exception e)
{
System.err.println("Error: read() " + e.getMessage());
}
}
public static void main(String [] args)
{
Reader reader = new ResultsReader("C:/data.txt");
reader.read();
String output = ((ResultsReader)reader).getInput();
String str = "title<.>section1<.>section2<.>";
String data[] = str.split("<.>");
}
Я не уверен, как хранить данные в отдельных списках ArrayLists, чтобы их можно было просмотреть.
1 ответ
Вы не можете создавать массивы и помещать в них данные, потому что вы не знаете, насколько велики для создания массивов. Итак, используйте вместо этого список, а затем превратите их в массивы после того, как вы закончили чтение файла:
List tilesList = new ArrayList<String>();
// etc.
FileReader fr = new FileReader(file_path);
BufferedReader br = new BufferedReader(fr);
String s = null // I think this should be null, so that if there are no lines,
// you don't have problems with str.split();
while((s = br.readLine()) != null) {
String[] line = str.split("<.>");
tilesList.add(line[1]);
// etc.
}
fr.close();
String[] tiles = tilesList.toArray(new String[tilesList.size()]);
// etc.