Чтение файла в строку на Java — Files.readString и BufferedReader
Программа на Java для создания строки из содержимого файла.
Для понимания этого примера нужно знать следующие темы Java:
Строки в Java
Класс
java.io.File
Перед тем как создавать строку из файла, предположим, что у нас в папке src есть файл test.txt.
Содержимое test.txt:
This is a
Test file.
Пример 1: создание строки из файла
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
public class FileString {
public static void main(String[] args) throws IOException {
String path = System.getProperty("user.dir") + "\\src\\test.txt";
Charset encoding = Charset.defaultCharset();
List<String> lines = Files.readAllLines(Paths.get(path), encoding);
System.out.println(lines);
}
}
Вывод:
[This is a, Test file.]
В этой программе мы используем свойство user.dir класса System, чтобы получить текущий каталог, который хранится в переменной path.
Мы использовали defaultCharset() для кодировки файла. Если вам известна кодировка, используйте её, иначе безопасно использовать кодировку по умолчанию.
Затем мы использовали метод readAllLines() для чтения всех строк файла. Он принимает путь к файлу и его кодировку и возвращает все строки в виде списка, как показано в выводе.
Поскольку readAllLines может выбросить IOException, мы должны объявить метод main следующим образом:
public static void main(String[] args) throws IOException
Пример 2: создание строки из файла (один String)
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
public class FileString {
public static void main(String[] args) throws IOException {
String path = System.getProperty("user.dir") + "\\src\\test.txt";
Charset encoding = Charset.defaultCharset();
byte[] encoded = Files.readAllBytes(Paths.get(path));
String lines = new String(encoded, encoding);
System.out.println(lines);
}
}
Вывод:
This is a
Test file.
В этой программе, вместо того чтобы получать список строк, мы получаем одну строку lines со всем содержимым.
Для этого мы использовали метод readAllBytes() для чтения всех байт из заданного пути. Затем эти байты преобразуются в строку с использованием кодировки по умолчанию.