有关在Android中保存/访问已保存文件的问题

时间:2011-09-25 03:59:03

标签: android save

好吧,我正在阅读很多关于各种Android和异地文档/帮助站点中的保存和访问实现,但我仍然无法理解实现以及它是如何工作的,所以我的最后一招是转向StackOverFlow(我自己正在研究这个)

在这个问题中,我有时会听起来有些愚蠢和迟钝,因为我在申请时正在学习,所以请耐心等待(并且我已经标出了整个文件的部分内容)我有问题):

首先,我看到要实现一个已保存的文件,必须编写(从android文档中获取):

//Declarations
String FILENAME = "hello_file";
String string = "hello world!";

//Meaning that FILENAME is to be saved as hello_file, and "hello world!" converts the string to bytes
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();

在里面保存数据的任何函数(例如按钮),如下所示:

public void testButtonPressToSave() {

FileOutputStream testSaveFile = openFileOutput(SavedFile, Context.MODE_PRIVATE);
testSaveFile.write();
testSaveFile.close();

}

但是,当我在代码中实现它时,Eclipse建议我在openFileOutput部分中使用try / catch异常,整个过程改为:

public void testButtonPressToSave() {
    FileOutputStream testSaveFile;
try {
    testSaveFile = openFileOutput(SavedFile, Context.MODE_PRIVATE);
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
try {
    testSaveFile.write(testString.getBytes());
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
try {
    testSaveFile.close();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}

(问题)这是正常的吗?如果在另一个活动中,我如何重新使用我保存的文件?我是否将整个主要活动导入到小部件提供程序类中?

另外,我完全理解:

1)  FileOutputStream testSaveFile; and testSaveFile = openFileOutput(SavedFile, Context.MODE_PRIVATE);

将testSaveFile声明为FileOutputStream对象,并使用Context.MODE_PRIVATE保存文件(.txt?),该文件将文件限制为只能由应用程序本身访问。

2)  testSaveFile.close(); 

以某种方式结束流(但这非常直接,它只是关闭文件)

我真正得到的部分是,如何在SavedFile数据包中保存多个变量?

Android文档为我提供了FileOutputStream下的可用write()函数:

public void write (byte[] buffer, int offset, int byteCount)

public void write (byte[] buffer)

public void write (int oneByte)

这不是我想要的,因为我需要流来保存多个变量,例如String和Integer []。

(问题)如何将我想要的数据类型保存到SavedFile中?

我也读过有关序列化的内容,但我不确定如何将文件保存到我的应用程序中。此外,我不太相信序列化在Dalvik VM(Android)上非常有效,因为我阅读和阅读的大部分代码都基于Java系统。

还有一个我不理解的Bundle android资源,但似乎是将各种多个变量存储到一个包中然后在下一个活动中解压缩它们的答案,尽管我看不出我怎么能够实际上将它保存到文件或其他东西。

好吧,我有很多要点,但如果有人能够回答这些问题,我将非常感激。您不必提供答案,但非常感谢明确的解释(尤其是技术术语:S)

1 个答案:

答案 0 :(得分:0)

看起来我通过Android中的SQLiteDatabase找到了一种更有效的方式来存储我的数据。不管怎样,谢谢!