从内部文件存储加载文件时如何返回位置对象?

时间:2013-10-22 12:46:59

标签: android object location storage fileinputstream

我正在以某种方式将GPS位置存储在内部文件存储中,并在另一种方法中按需检索它。

由于我是Android新手,我尝试了几种方法,并决定使用FileOutput- / InputStream,因为它对我来说更容易理解。我正在使用Android位置API(http://developer.android.com/reference/android/location/Location.html)。 我知道保存位置对象在技术上通过将其写入字符串然后写入字节来工作,但是如何加载已保存的文件并返回保存的位置对象?

我的代码方法:

public void saveCurrentLocation(){ //method works, I can see the saved file in the file explorer
    Location currentLoc = gpsClass.getCurrentLocation(); //method within gpsClass that returns current location
    try {
        FileOutputStream fos = openFileOutput("SaveLoc", Context.MODE_PRIVATE);
        fos.write(currentLoc.toString().getBytes());
        fos.close();
    }
    catch(Exception e) { e.printStackTrace();}

}

public void loadSavedLocation() {
    Location savedLoc;
    try{
        BufferedReader inputReader = new BufferedReader(new InputStreamReader(openFileInput("SaveLoc")));
        String inputString;
        StringBuffer stringBuffer = new StringBuffer();
        while((inputString = inputReader.readLine()) != null) {
            stringBuffer.append(inputString);
    }
        gpsClass.update(??);
    }
    catch(Exception e) {e.printStackTrace();}
}

我想将inputString中的Object readout位置传递给“gpsClass.update()”,它只接受Location类型的变量。我是否必须使对象可序列化,如果是,如何? 非常感谢提前!

1 个答案:

答案 0 :(得分:0)

为什么不将您的位置对象保存到SQLite数据库中? 或类似的东西:

保存:

FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(your object);
os.close();

负载:

FileInputStream fis = context.openFileInput(fileName);
ObjectInputStream is = new ObjectInputStream(fis);
YourClass yourObject = (YourClass) is.readObject();
is.close();
return yourObject;

这可以让你回到正轨