找到了解決辦法: 您必須打開流是這樣的:序列化的簡單對象IOException異常
FileInputStream inputStream = openFileInput(FILENAME);
ObjectInputStream ois = new ObjectInputStream(inputStream);
與相同輸出。這對我來說是固定的,任何人都會在尋找答案時偶然發現。
原題: 通過與Toast
個幾測試中,我發現,當我調用構造函數用於ObjectOutputStream
我得到拋出的IOException
。
我的代碼看起來像這樣。請注意,這只是一個測試項目,我甚至無法讓這個工作。
Button b = new Button(this);
b.setText("write");
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
try {
File f = new File("Filepath");
if (!f.exists()) {
f.createNewFile();
}
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream(f)); //IOException here!
Series x = new Series("Test", 20, 12);
// oos.writeObject(x);
oos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
tv = new TextView(this);
tv.setText("Not read anything yet!");
Button r = new Button(this);
r.setText("Read");
r.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream(new File("Filepath")));
Series y = (Series) ois.readObject();
tv.setText(y.getName() + "-" + y.getNumOfSeason() + "-"
+ y.getNumOfEpisode());
ois.close();
} catch (StreamCorruptedException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
這個問題似乎是我的構造函數調用。在我添加零件之前
if (!f.exists()) {
f.createNewFile();
}
我得到了FileNotFoundException
。
我在做什麼錯?
我通過檢查文件是否存在以及是否不創建它來避免'FileNotFoundException'。在OOS的構造函數調用中發生IOException。 –
同樣,您正在避免FileNotFoundExecption,但您在獲取IOException之後。你確定你的文件路徑嗎? – javadev
我只是把一個字符串,而不是我的文件路徑,說「測試」。仍然得到FileNotFoundException。 當我打開流時不應該創建它嗎? –