gpt4 book ai didi

java - Android Java 保存到文件返回 IOException

转载 作者:行者123 更新时间:2023-12-01 12:28:06 26 4
gpt4 key购买 nike

我知道可能有很多这样的事情(相信我,当我试图做到这一点时,我经历了很多),但我似乎无法让这一切继续下去。我试图将自定义对象(汽车)列表保存到本地存储上的文件中,然后通过单击按钮将它们加载回来。我一直在尝试根据我读过的许多资料来使用 FileOutputStream。出于某种原因,当使用简单的字符串列表进行测试时,它工作得很好,但是当涉及到我自制的对象时,我在尝试保存时不断收到 IO 异常。如果有人可以看一下我的代码并告诉我我缺少什么(我花了 20 多个小时尝试自己对这个代码进行排序,但没有成功)。P.S - 保存和加载方法由工作正常的按钮调用,因此代码被忽略。

public class Main extends Activity implements OnClickListener{
public static List<Car> carList = new ArrayList<Car>();
String FILENAME = "carListFile";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button buttonView_saveb;
Button buttonView_loadb;

buttonView_saveb = (Button)findViewById(R.id.saveb);
buttonView_loadb = (Button)findViewById(R.id.loadb);

buttonView_saveb.setOnClickListener(this);
buttonView_loadb.setOnClickListener(this);

@Override
public void onClick(View view){
switch (view.getId()){
case R.id.saveb:
SaveData();
break;

case R.id.loadb:
LoadData();
break;
}
}

public void LoadData(){
ArrayList<car> toReturn;
FileInputStream fis;
try {
fis = openFileInput(FILENAME);
ObjectInputStream oi = new ObjectInputStream(fis);
toReturn = (ArrayList<Car>) oi.readObject();
oi.close();
} catch (FileNotFoundException e) {
System.out.println("Failed to load, file '"+FILENAME+"' not found");
} catch (ClassNotFoundException e) {
System.out.println("Failed to load from file '"+FILENAME+"', Class not found");
} catch (IOException e) {
System.out.println("Failed to load from file '"+FILENAME+"', I/O Exception")
}
}

// this method return io exception, no idea why
public void SaveData(){
try {
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
ObjectOutputStream of = new ObjectOutputStream(fos);
of.writeObject(diveLog);
of.flush();
of.close();
} catch (FileNotFoundException e) {
System.out.println("Failed to save, file '"+FILENAME+"' not found");
} catch (IOException e) {
System.out.println("Failed to save to file '"+FILENAME+"', I/O Exception");
}
}
}

无论我做什么,都会出现 IO 异常。另请注意,我有一个按钮将汽车添加到列表中,因此我不会保存空列表(尽管我不明白为什么这很重要)。

最佳答案

感谢所有花时间帮助我的人。添加以下行后看起来:

e.printStackTrace();

到异常捕获器并按照 logCat 输出我发现 Car 无法序列化。一项快速研究表明,由于 Car 对象来自一个类 (Car.java),该类必须实现“可序列化”才能序列化并随后反序列化。

Car.java 文件中的so:

public class Car implements Serializable { 

我对整个过程有一个很好的解释,对于像我这样刚接触 java 的人来说是完美的: https://www.youtube.com/watch?v=6MisF1sxBTo

关于java - Android Java 保存到文件返回 IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26179346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com