У меня есть объект InputStreamReader. Я хочу прочитать несколько строк в буфере/массиве, используя один вызов функции (без разбивки массива строковых объектов). Есть ли простой способ сделать это?Прочитайте несколько строк из InputStreamReader (JAVA)
ответ
Прежде всего помните, что InputStreamReader
не так эффективен, вы должны обернуть его вокруг объекта BufferedReader
для максимальной производительности.
Принимая во внимание это вы можете сделать что-то вроде этого:
public String readLines(InputStreamReader in)
{
BufferedReader br = new BufferedReader(in);
// you should estimate buffer size
StringBuffer sb = new StringBuffer(5000);
try
{
int linesPerRead = 100;
for (int i = 0; i < linesPerRead; ++i)
{
sb.append(br.readLine());
// placing newlines back because readLine() removes them
sb.append('\n');
}
}
catch (Exception e)
{
e.printStackTrace();
}
return sb.toString();
}
Ум, который возвращается readLine()
null
является EOF
достигается, так что вы должны проверить и заботиться о нем.
Цель в НЕ читать строки по строкам, так как она заполняет мою кучу избыточными строковыми объектами и делает GC диким. Я хотел прочитать из inputstreamreader (используя bufferedReader/whatever), не создавая много объектов String. Возможно, прочитайте непосредственно в буфер (не создавая строку в середине) или иначе прочитайте несколько строк, чтобы избежать мусора строки ... – amitlicht
как насчет использования __RandomAccessFile__ для прямого чтения буфера байтов? Также весь файл (__readFull (byte [] b) __) – Jack
Строки * очень * оптимизированы в JVM v. 1.6. Вы использовали профилировщик и действительно заметили проблему? Или вы просто догадываетесь? – incarnate
Если у вас есть разделитель для нескольких строк, вы можете прочитать, что многие символы используют метод чтения с длиной и смещением. В противном случае использование StringBuilder для добавления каждой строки, прочитанной BufferedReader, должно хорошо работать для вас, не съедая слишком много временной памяти.
- 1. Прочитайте несколько строк STDIN Java
- 2. Прочитайте несколько строк с помощью BufferedReader (Socket)
- 3. Прочитайте несколько строк из консоли в Java, введите последнюю строку
- 4. Прочитайте несколько строк из std :: cin
- 5. Прочитайте несколько строк из файла C++
- 6. Java InputStreamReader
- 7. Прочитайте вывод команды (несколько строк)
- 8. Android java InputStreamReader
- 9. Ошибка Java InputStreamReader (org.apache.poi.openxml4j.exceptions.InvalidOperationException)
- 10. Прочитайте несколько строк слов с помощью java.util.Scanner()
- 11. Java: прочитайте последние n строк ОГРОМНОГО файла
- 12. Прочитайте несколько случайных строк из файла в Python
- 13. Прочитайте только первые несколько строк текста из файла
- 14. Прочитайте несколько строк из файла как разные переменные.
- 15. Создайте InputStreamReader из JOptionPane.showInputDialog
- 16. создания JSONObject из InputStreamReader
- 17. Чтение 4 байта из InputStreamReader
- 18. java hadoop: FileReader VS InputStreamReader
- 19. Java InputStreamReader/Reader throws NullPointerException
- 20. Java InputStreamReader & UTF-8 charset
- 21. Прочитайте несколько записей из одной строки
- 22. Прочитайте несколько файлов из разных папок в Java
- 23. InputStreamReader и чтение случайных строк из файла .txt
- 24. Прочитайте несколько файлов с Spark java от Alluxio медленно
- 25. Захват определенных частей InputStreamReader в Java
- 26. Прочитайте несколько таблиц через скребок
- 27. InputStreamReader или консоль для ввода/вывода Java
- 28. Swift: прочитайте несколько слов из Localizable string
- 29. Прочитайте несколько разделенных запятыми двойников из строки
- это количество строк, которые вы хотите читать фиксированными или разнообразными? – Jason
Исправлено, скажем, 100 строк, каждый из которых читается – amitlicht
Являются ли линии фиксированной длины? –