Перейти к содержимому

Как прочитать строку в java

  • автор:

Как считать строки из файла java

Чтение строк из файла в Java можно выполнить с помощью класса BufferedReader , который позволяет читать текстовые данные из потока ввода. Для чтения строк из файла сначала необходимо открыть файл для чтения, а затем читать строки по одной до тех пор, пока не достигнут конец файла.

Ниже приведен пример кода, который демонстрирует, как считывать строки из файла в Java с помощью BufferedReader :

import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Main  public static void main(String[] args)  try  BufferedReader reader = new BufferedReader(new FileReader("file.txt")); String line = reader.readLine(); while (line != null)  System.out.println(line); line = reader.readLine(); > reader.close(); > catch (IOException e)  e.printStackTrace(); > > > 
  • В этом примере мы создаем объект BufferedReader с помощью конструктора new BufferedReader(new FileReader(«file.txt»)) , где file.txt — это имя файла, который мы хотим прочитать.
  • Затем мы читаем строки из файла, вызывая метод readLine() объекта BufferedReader . Метод readLine() возвращает очередную строку текста из файла или null , если достигнут конец файла.

Кроме того, обратите внимание, что мы заключили вызов BufferedReader.close() в блок finally , чтобы гарантировать, что поток чтения будет закрыт даже в случае исключения.

Как прочитать InputStream в строку?

Обычно строковые данные извне попадают в программу именно в виде потока. Потоком читаются файлы, сетевые данные из сокета, пользовательский ввод. Если есть такая возможность, лучше избегать сохранения потоковых данных в память, и обрабатывать их также в потоке. Например, когда из большого xml-файла необходимо достать один определенный элемент, имеет смысл выбрать потоковый xml-парсер.

В общем виде все решения выглядят так. Заводится буфер – массив символов. Поток направляется в этот буфер. По заполнению данные из массива присоединяются в хвост строки-результата.

Простой способ – использовать трюк со сканером. Вообще класс Scanner читает из потока подстроки, разделенные указанным символом. Когда нужно прочитать всю строку сразу, в качестве разделителя устанавливается «\\A» – спецсимвол «начало строки». Это решение просто в реализации, но имеет проблемы. Размер внутреннего буфера фиксирован (1024 символа), а логика поиска разделителя плохо влияет на производительность.

Хорошее решение для продакшна – читать в собственный массив-буфер непосредственно методом InputStream.read , либо обернув поток в InputStreamReader . Данные из буфера затем переправляются в строку через StringBuilder или ByteArrayOutputStream . За готовой реализацией можно обратиться в библиотеки Apache Commons IO и Google Guava. Полный код реализации и сравнение производительности описаны на stackoverflow.

На интервью этот вопрос часто возникает как часть практической задачи, для консольного ввода-вывода. Поэтому, если вы идете на собеседование со своим компьютером, и неуверенно владеете классами работы с потоками, стоит заранее подготовить шпаргалку с кодом.

Прочитать строку из стандартного ввода в Java

В этом посте мы обсудим, как читать строку из стандартного ввода ( System.in ) с использованием Scanner а также BufferedReader на Java. Поскольку одна строка ввода может содержать несколько значений, разделите строку на строковые токены.

1. Использование Scanner

Простое решение — использовать Scanner класс для чтения строки из System.in . А Scanner разбивает свой ввод на токены, используя шаблон разделителя, который по умолчанию соответствует пробелу.

Как с помощью Scanner считывать строку полностью, с учётом пробелов?

Он считывает только слово, до первого пробела. Его естественная функция. Но мне надо записать строку слов целиком. Везде предлагается метод использования nextLine() , но есть одно НО: При его использовании, при отображении в консоле вместо первой фразы «

"Input a Dream:" 

» отображается сразу всё:

"Input a Dream: Input a Status: " 

после чего можно заполнить только одну переменную — s_status_input . Как мне написать так, чтобы я смог ввести две фразы раздельно и каждая записалась в нужную переменную?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Luxury Car Rental in Miami | Reserve a Premium Vehicle with RealCar