Проблема с чтением и созданием файлов
Задача - написать шифровальщик Цезаря, но сейчас мой вопрос даже не об этом - программа должна получать адрес файла от пользователя, что-то с ним (файлом) делать - шифровать или наоборот, а потом записывать результат в новый файл.
Однако класс, отвечающий за чтение/создание файлов, не отрабатывает. Вроде всё компилируется, ошибок/исключений не выбрасывает но с файлом по адресу, который я ввожу (стандартно 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 шт):
При создании файла выходной поток надо закрыть, проще всего это можно сделать при помощи 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);
}
}