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

Файловый ввод/вывод

Чтобы прочитать данные из файла, достаточно сконструировать объект типа Scanner:

Scanner in = new Scanner(Path.of("myfile.txt"), StandardCharsets.UTF_8);

Если имя файла содержит знаки обратной косой черты, их следует экранировать дополнительными знаками обратной косой черты, как, например, "c:\\mydirectory\\myfile.txt". После этого можно произвести чтение из файла, используя любые упомянутые выше методы из класса Scanner.

А для того, чтобы записать данные в файл, достаточно сконструировать объект типа PrintWriter, указав в ero конструкторе имя файла:

PrintWriter out = new PrintWriter("myfile.txt", StandardCharsets.UTF_8);

Если файл не существует, он создается. Для вывода в файл можно воспользоваться методами print(), println() и printf() точно так же, как это делается для вывода в консоль (или в стандартный поток вывода System.out).

Если вы конструируете объект типа Scanner с файлом, который еще не существует, или объект типа PrintWriter с именем файла, который не может быть создан, возникает исключение. Компилятор Java рассматривает подобные исключения как более серьезные, чем, например, исключение при делении на нуль. Позже будут рассмотрены различные способы обработки исключений. А до тех пор достаточно уведомить компилятор о том, что при файловом вводе и выводе может возникнуть исключение типа "файл не найден". Для этого в объявление метода main() вводится предложение throws, как показано ниже.

public static void main(String[] args) throws IOException {
Scanner in = new Scanner(Path.of("myfile.txt"), StandardCharsets.UTF_8);
...
}