我想将数据存储在二进制文件中,如果它不存在则应该生成文件夹,但是看起来不是这样,我打电话说如果文件不存在则应该生成它
public Account(int accountid, String name, String lastname, double balance, AccountState state) {
this.name = name;
this.lastname = lastname;
this.accountID = accountid;
this.balance = balance;
this.state = state;
try {
accountfile = new File("./Clients/" + lastname + "/" + name + "/" + "BalanceInfo " + accountid + ".ACC");
if(!accountfile.exists()) {
accountfile.createNewFile();
}
fos = new FileOutputStream(accountfile);
oos = new ObjectOutputStream(fos);
oos.writeObject("balance: " + balance);
oos.writeObject("state: " + state.toString().toLowerCase());
} catch(IOException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
System.out.println("Account sucessfully Created");
}
但是,它会生成以下错误
The system cannot find the path specified
Account sucessfully Created
java.io.IOException: The system cannot find the path specified
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(Unknown Source)
at dinges.Account.<init>(Account.java:44)
at dinges.Main.main(Main.java:10)
我也没有生成文件,这有点令人困惑。
答案 0 :(得分:1)
您应该创建文件夹:
try {
accountfile = new File("./Clients/" + lastname + "/" + name + "/" + "BalanceInfo " + accountid + ".ACC");
if(!accountfile.exists()) {
accountfile.getParentFile().mkdirs();
accountfile.createNewFile();
}
答案 1 :(得分:0)
我将看一下代码中的“}”。似乎println出现在Try ... Catch块中。这回答了为什么你看到文本和错误。关于消息顺序的第二个问题,即System.out和System.err在不同时刻写,因为它们就像不同的线程。所以前两行是System.out,同时堆栈跟踪来自e.printStackTrace。
这个question也回答了如何创建路径。