Android:无法将对象写入文件

时间:2015-05-18 18:05:43

标签: android

我正在开发一个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;
       }
   }

}

任何人都可以告诉我我做错了什么或者指出我有用的相关帖子吗?

2 个答案:

答案 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文件系统中不存在。并且:字符被禁止。