Java 需要帮助解决FileOutputStream和DataOutputStream上的IOexception吗
我试图将整数写入文本文件作为保存游戏的一种方法,但我同时得到IOExceptions和FileNotFound异常(在它们出现的行上的注释中写入)。saveData类存储字符stat,这些字符都是int。我应该做什么来修复异常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
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();
}