• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

чтение файла в массив строк

  • Автор темы abygail
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

abygail

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

Сделал, но скорее всего неправильною потому как памяти много уходит (в 2 раза больше чем нужно) иза использования и lines и buf. Может на java есть какие стредства для динамического изменения размера массива или типа того ?

Код:
	File baseFile = new File(args[0]);

//create lines array
String[] lines = new String[0];
String[] buf;

String s = "";
int count = 0;

//read file
try {
FileReader fr = new FileReader(baseFile);
BufferedReader br = new BufferedReader(fr);

while ((s = br.readLine()) != null) {
//skopiruem tekuschi massiv
buf = lines;
//sozdadim novy na 1 stroku bolshe
lines = new String[count + 1];
//perenesem bufer v novy massiv i dobavim v nego prochitannuu stroku
for (int i = 0; i < buf.length; i++) {
lines[i] = buf[i];
}
lines[count] = s;
count++;
}

for (int i = 0; i < lines.length; i++) {
System.out.println(lines[i]);
}
br.close();

} catch (IOException e) {
}
 
A

Afrael

ну работает то правильно, если принять во внимание перфоманс, то может стоит заменить
String[] - на Arraylist.
тогда вызовов new будет поменьше - но гарантировать что это будет экономичнее - не факт
 
B

bingo

Только лучше будет предварительно указать initialCapacity в конструкторе ArrayList'a, чтоб внутренний массив не пересоздавался по многу раз (если файл большой).
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!