2013-08-20 55 views
0

我正在嘗試將二進制文件寫入指定的文件夾,但它一直給我一個例外。 例如,如果我寫的文件沒有指定任何文件夾中的程序沒有問題,將其寫:FileOutputStream將二進制文件寫入指定的文件夾

public void saveFile(String name) throws IOException { 
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(name + ".bin")); 
    out.writeObject(this); 
    out.close(); 
} 

然而,當我試圖指定文件夾中的程序只是不寫入文件:

public void saveFile(String name) throws IOException { 
    File location = new File("/path/" + name + ".bin"); 
    FileOutputStream fos = new FileOutputStream(location); 

    ObjectOutputStream out = new ObjectOutputStream(fos); 
    out.writeObject(this); 
    out.close(); 
    fos.close(); 
} 

我嘗試了幾種不同的方法,但仍然沒有解決方案。 有誰知道我做錯了什麼?

+0

寫堆棧跟蹤 – 2013-08-20 11:57:33

回答

0

檢查您要寫的班級是否爲Serializable

public class Foo implements java.io.Serializable{ 

    //... 

    public void write() throws IOException{ 
     ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("Test.bin")); 
     os.writeObject(this); 
     os.close(); 
    } 

} 

另一個問題: 如果沒有命名path不能寫入對象

再次檢查你的代碼文件夾中。

+0

是的,它是可序列化的。 您使用的方式是我可以做的方式,無需指定任何路徑。這樣我就可以做到沒有問題。 – undisp

+0

檢查是否有名爲你想要的名字的文件夾。 – 2013-08-20 12:09:19

+0

問題解決了。非常感謝,夥計:) 我認爲程序會自動創建路徑,但似乎我錯了。 – undisp

0

的唯一理由,似乎非序列化,就是你可能沒有實現Serializable接口 並正確給你的路徑名如: - 「C:\用戶\ ..」 希望工程

+0

問題是我輸入了一個不存在的路徑。我認爲該計劃將創造這條道路,但它不會...... – undisp