使用相对路径保存我的二进制文件无法找到路径

时间:2016-07-21 14:09:32

标签: java binaryfiles

我想将数据存储在二进制文件中,如果它不存在则应该生成文件夹,但是看起来不是这样,我打电话说如果文件不存在则应该生成它

    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)

我也没有生成文件,这有点令人困惑。

2 个答案:

答案 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也回答了如何创建路径。