Я использую класс Scanner для получения имени файла. Но мой Сканер даже не запрашивает у меня никакой строки. Он просто устанавливает введенную строку в «» (пустая строка). Затем я получаю исключение для файла, который не найден. Еще один вопрос - я использую FileOutputStream для записи файла. Разве это не должно создать файл, если не существует? Вот часть моего кода, где я использую сканер.
else if(user_choice == 3){
System.out.println("kaydedilecek dosyanın ismini giriniz : ");
String file_name = s.nextLine();
IOdata iod = new IOdata(data);
iod.save_data(file_name);
, и приведенный ниже код примерно равен io.
public void save_data(String file_name) throws IOException {
try {
FileOutputStream fos = new FileOutputStream(file_name);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(data);
oos.close();
}catch (FileNotFoundException e){
file_name = "default";
FileOutputStream fos = new FileOutputStream(file_name);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(data);
oos.close();
}
}
Редактирование полностью моего класса меню:
import java.io.IOException;
import java.util.Scanner;
public class Menu {
public Menu() throws IOException {
Scanner s = new Scanner(System.in);
Data data = new Data();
while(true){
System.out.println("1-data oluştur");
System.out.println("2-datayı yükle");
System.out.println("3-datayı kaydet");
System.out.println("4-çıkış");
System.out.println("5-yazdır");
int user_choice = s.nextInt();
if(user_choice == 4) {
break;
}else if(user_choice == 1){
DataManupilator dm = new DataManupilator(data);
System.out.println("datanın uzunluğunu giriniz : ");
int length = s.nextInt();
data = dm.generate_data(length);
}else if(user_choice == 5){
data.print_items();
}else if(user_choice == 3){
System.out.println("kaydedilecek dosyanın ismini giriniz : ");
String file_name = s.nextLine();
IOdata iod = new IOdata(data);
iod.save_data(file_name);
}else if(user_choice == 2){
System.out.println("datanın bulunduğu dosyanın ismini giriniz : ");
String file_name = s.nextLine();
IOdata iod = new IOdata(data);
iod.save_data(file_name);
}
}
}
}
В моем коде есть некоторые турки sh Строки, поэтому позвольте мне объяснить. Если пользователь выбирает 3, программа переходит к записи данных в файл.