Java 需要帮助解决FileOutputStream和DataOutputStream上的IOexception吗

Java 需要帮助解决FileOutputStream和DataOutputStream上的IOexception吗,java,Java,我试图将整数写入文本文件作为保存游戏的一种方法,但我同时得到IOExceptions和FileNotFound异常(在它们出现的行上的注释中写入)。saveData类存储字符stat,这些字符都是int。我应该做什么来修复异常 Scanner s = new Scanner(System.in); Character player = new Character(); System.out.print("Enter your username: "); String u

我试图将整数写入文本文件作为保存游戏的一种方法,但我同时得到IOExceptions和FileNotFound异常(在它们出现的行上的注释中写入)。saveData类存储字符stat,这些字符都是int。我应该做什么来修复异常

Scanner s = new Scanner(System.in);
    Character player = new Character();

    System.out.print("Enter your username: ");
    String user = s.nextLine();
    System.out.print("Give a name to the file: ");
    String filename = s.nextLine();
    s.close();

    Vector<Integer> saveData = new Vector<Integer>();
    saveData.add(player.Int);
    saveData.add(player.Vit);
    saveData.add(player.Str);
    saveData.add(player.Dex);

    FileOutputStream fos = new FileOutputStream("C:\\Users\\" + user + "\\" + filename + ".csv"); //Unhandled exception type FileNotFoundException
    DataOutputStream dos = new DataOutputStream(fos);

    for(int i = 0; i < saveData.size(); i++) {
        dos.writeInt(saveData.get(i)); //Unhandled exception type IOException
    }

    dos.close(); //Unhandled exception type IOException
Scanner s=新的扫描仪(System.in);
角色播放器=新角色();
System.out.print(“输入您的用户名:”);
字符串user=s.nextLine();
System.out.print(“给文件起个名字:”);
字符串文件名=s.nextLine();
s、 close();
Vector saveData=新向量();
saveData.add(player.Int);
saveData.add(player.Vit);
saveData.add(player.Str);
saveData.add(player.Dex);
FileOutputStream fos=新的FileOutputStream(“C:\\Users\\”+user+“\\”+filename+”.csv”)//未处理的异常类型FileNotFoundException
DataOutputStream dos=新的DataOutputStream(fos);
对于(int i=0;i
如果您的
用户
目录不存在,您将获得该异常。应使用
user.name
获取当前登录的用户名,而不是请求它

请尝试以下操作:

String user = System.getProperty("user.name"); //get the current logged in user name

Path path = Paths.get("C:\\Users\\" + user + "\\" + filename + ".csv");

//Try-with-resource will close DOS even upon exception
try(DataOutputStream dos = new DataOutputStream(Files.newOutputStream(path)) {
  for(int i = 0; i < saveData.size(); i++) {
    dos.writeInt(saveData.get(i)); 
  }
} catch (IOException ex) {
  ex.printStackTrace();
}
String user=System.getProperty(“user.name”)//获取当前登录的用户名
Path Path=Path.get(“C:\\Users\\”+user+“\\\”+filename+”.csv”);
//Try with resource即使出现异常也会关闭DOS
try(DataOutputStream dos=newdataoutputstream(Files.newOutputStream(path)){
对于(int i=0;i
File yourFile=File yourFile=new文件(“C:\\Users\\”+user+“\\”+filename+”.csv”);
yourFile.getParentFile().mkdirs();
try(DataOutputStream dos=newdataoutputstream(newfileoutputstream(yourFile))){
对于(int i=0;i
FileOutputStream
抛出一个
FileNotFoundException
:问题不是抛出异常,而是您的代码没有尝试处理选中的异常。而且,与您的问题无关,
Vector
长期以来一直被弃用。同意@jsheeran:使用try with resource block并处理异常。它将在Java中非常有用…而您的解决方案将起作用。用户不应在windows上的
Users
目录中创建文件夹。相反,用户名应取自
user.name
属性。此外
try with resource
Java.nio
应用于资源管理。
  File yourFile =  File yourFile = new File("C:\\Users\\" + user + "\\" + filename + ".csv");
    yourFile.getParentFile().mkdirs();
    try (DataOutputStream dos = new DataOutputStream(new FileOutputStream(yourFile))) {

        for (int i = 0; i < saveData.size(); i++) {
            dos.writeInt(saveData.get(i));
        }

    } catch (IOException e) {
        e.printStackTrace();
    }