我想从Android内部存储中读取对象。
以下是我的代码。 我编写了一个静态函数,用于从同一个类的文件中读取对象。 不知道为什么会发生这种异常。 真的很感激,如果你能提出一些建议。
感谢。
package com.crescent.programmercalculator;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import android.util.Log;
import android.content.Context;
public class CalculateConfigurations implements Serializable{
static String configLocation="configFile";
public short radix;
CalculateConfigurations(){
radix=16;
}
public static CalculateConfigurations loadObjectFromFile(Context context){
try {
FileInputStream fis = context.openFileInput(configLocation);
ObjectInputStream is = new ObjectInputStream(fis);
CalculateConfigurations config = (CalculateConfigurations) is.readObject();
is.close();
fis.close();
return config;
} catch (FileNotFoundException e) {
// first use case
Log.v("CalculateConfigurations", "first init for configuration file");
return new CalculateConfigurations();
} catch (IOException e) {
e.printStackTrace();
Log.e("CalculateConfigurations", "Fatal error, configuration file may be broken");
return new CalculateConfigurations();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
Log.e("CalculateConfigurations", "Fatal error, unknown");
return new CalculateConfigurations();
}
}
}
答案 0 :(得分:0)
ClassNotFoundException的
在大多数情况下,这是xml文件中的一些混淆。如果您同时发布stacktrace和正确的xml文件,则很容易修复它!
答案 1 :(得分:0)
继续阅读readObject
对于InputStream和for的问题,会抛出异常 不应反序列化的类。所有例外都是致命的 InputStream并使其处于不确定状态;它取决于 调用者忽略或恢复流状态。
由于您尝试读取android内部库,因此无法将其转换为自定义类。因此ClassNotFoundException。
希望这有帮助。
答案 2 :(得分:0)
我今天遇到同样的问题。我不知道序列化/反序列化是如何完成的,但我注意到它是一个非常不稳定的过程。
如果序列化某些对象并放入内存,则无法轻松更改数据类型/类名。如果它抛出类似于此类的异常,请从设备中删除该应用程序并再次安装。我希望,它可以帮助一些开发人员:)