【发布时间】:2020-03-22 13:21:39
【问题描述】:
我正在使用 Scanner 类来获取文件名。但是我的 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);
}
}
}
}
我的代码中有一些土耳其字符串,所以让我解释一下。如果用户选择 3 程序去将数据写入文件。
【问题讨论】:
-
我们需要更多信息。您如何创建扫描仪?你在扫描什么/你是如何获得输入的?
-
您是否像这样声明了扫描仪 Scanner in = new Scanner(System.in)?
-
我编辑添加了我的菜单类的完整代码。 n现在你可以看到了。
-
@am0awad 是的,我就是这样用的
标签: java serialization io java.util.scanner fileoutputstream