Проблема с чтением и созданием файлов

Задача - написать шифровальщик Цезаря, но сейчас мой вопрос даже не об этом - программа должна получать адрес файла от пользователя, что-то с ним (файлом) делать - шифровать или наоборот, а потом записывать результат в новый файл.

Однако класс, отвечающий за чтение/создание файлов, не отрабатывает. Вроде всё компилируется, ошибок/исключений не выбрасывает но с файлом по адресу, который я ввожу (стандартно C:\\Users\\modar\Рабочий стол\\названиефайла.txt) ничего не происходит, даже создать не получается.

Подскажите, пожалуйста, что не так кодом.

Класс с пользовательским меню, где юзер вводит, что должна делать программа

import java.io.IOException;
import java.util.Scanner;
    
public class Main {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
    
        System.out.println("Меню");
        System.out.println("выберите действие");
        System.out.println("1 зашифровать файл");
        System.out.println("2 расшифровать файл");
        System.out.println("3 взломать файл");
        System.out.println("4 сохранить файл");

        int comanda = scanner.nextInt();
        while (true) {
            scanner.nextLine();
    
            if (comanda == 1) {
                System.out.println("введите адрес файла ");
                textgetter.FileGetter();
                System.out.println("файл зашифрован, сохраните файл");
            }
    
            if (comanda == 2) {
                System.out.println("введите адрес файла ");
                textgetter.FileGetter();
                System.out.println("файл дешифрован, сохраните файл");
            }
            if (comanda == 3) {
                System.out.println("введите адрес файла ");
                textgetter.FileGetter();
                System.out.println("файл взломан, сохраните файл");    
            }
            if (comanda == 4) {
                System.out.println("введите адрес для сохранения файла");
                textgetter.FileWriter();    
            }
        }
    }
}

собственно класс, работающий с файлами

import java.io.*;
import java.util.Scanner;
    
public class textgetter {
    static Scanner scanner = new Scanner(System.in);
    public static String getfile;
    public static String writefile;
    
    public static void FileGetter() throws FileNotFoundException {
        getfile = scanner.nextLine();
        File file = new File(getfile);
        BufferedReader input = new BufferedReader(new FileReader(file));
    }

    public static void FileWriter() throws IOException {
        writefile = scanner.nextLine();
        File file2 = new File(writefile);
        try {
           BufferedWriter output = new BufferedWriter(new FileWriter(file2));
           output.write("test");
       } catch (IOException e) {
           throw new RuntimeException(e);
       }
   }
}

Ответы (1 шт):

Автор решения: Nowhere Man

При создании файла выходной поток надо закрыть, проще всего это можно сделать при помощи try-with-resources:

// class textgetter
public static void FileWriter() throws IOException {
    writefile = scanner.nextLine();
    File file2 = new File(writefile);
    // поток закроется автоматически
    try (BufferedWriter output = new BufferedWriter(new FileWriter(file2))) {
       output.write("test");
    } catch (IOException e) {
       throw new RuntimeException(e);
    }
}
→ Ссылка