我正在开发一个Android项目,我有两个需要保存和阅读的对象。到目前为止,我已经写出了其中一个对象的代码,但是当我运行它时,我得到了错误" java.io.FileNotFoundException:tripfile.ser:open failed:ENOENT(没有这样的文件或目录) "
我发现这个post有类似的问题,但那里的解决方案似乎并不适合我。我的代码如下。
public class FileHandler {
static Context context;
static String tripFileName = "tripfile.ser";
static String oauthFileName = "oauthFile.ser";
public FileHandler(Context c){
context=c;
File dir = new File(context.getFilesDir() + "C:/Users/M/workspace/NerdRanch/FitTravel");
dir.mkdirs();
File tripFile = new File(dir, tripFileName);
File oauthFile = new File(dir, oauthFileName);
}
public static void writeTrip(Trip curTrip){
Trip trip = curTrip;
FileOutputStream outputStream;
try {
outputStream = context.openFileOutput(tripFileName, 0);
ObjectOutputStream objectStream = new ObjectOutputStream(outputStream);
objectStream.writeObject(trip);
objectStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static Trip readTrip(){
Trip t;
try{
FileInputStream inputStream = new FileInputStream(tripFileName);
ObjectInputStream objectIn = new ObjectInputStream(inputStream);
t = (Trip) objectIn.readObject();
objectIn.close();
return t;
}
catch(Exception e){
e.printStackTrace();
return null;
}
}
}
任何人都可以告诉我我做错了什么或者指出我有用的相关帖子吗?
答案 0 :(得分:1)
你试试这种方法来写&将对象读取到共享的prefs文件 - 使用google的gson序列化反序列化对象并使用共享的pref写入
......很容易
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import com.google.gson.Gson;
写对象:
SharedPreferences mPrefs;
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson(object);
prefsEditor.putString("MyObject", json);
prefsEditor.commit();
阅读对象:
Gson gson = new Gson();
String json = mPrefs.getString("MyObject", "");
MyObject object = gson.fromJson(json, MyObject.class);
答案 1 :(得分:0)
"C:/Users/M/workspace/NerdRanch/FitTravel"
这是Windows机器上的文件或目录。如果你用手机在丛林里跑来跑去,你认为它可以找到吗?而且C:在Android / linux文件系统中不存在。并且:字符被禁止。