用Shared Preference和数据库来存储应用程序的数据是个很好的习惯。但也存在有时候你需要直接用文件来储存,而不想依赖于Android的托管机制。
和标准的Java I/O类与方法一样,Android提供了openFileInput和openFileOutput来简化从本地文件读取或写入流,如下面的代码片段所示:
String FILE_NAME = “tempfile.tmp”;
// Create a new output file stream that’s private to this application.
FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE);
// Create a new file input stream.
FileInputStream fis = openFileInput(FILE_NAME);
这些方法只支持在当前应用程序文件夹内的文件;指定路径分隔符会引发一个异常。
如果在创建FileOutputStream时指定的文件不存在的话,Android会为你创建一个。对待已经存在的文件的默认行为是覆盖它们;为了能追加一个已经存在的文件,通过指定Context.MODE_APPEND模式。
默认情况下,通过openFileOutput方法创建的文件只能在调用的应用程序里可见——不同的应用程序尝试访问这些文件时会被拒绝访问。在应用程序间共享文件的标准方法是应用一个Content Provider。可变通的地方,你可以在创建输出文件时指定Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE模式来让它们在其它的应用程序中可见,如下面的片段所示:
String OUTPUT_FILE = “publicCopy.txt”;
FileOutputStream fos = openFileOutput(OUTPUT_FILE, Context.MODE_WORLD_WRITEABLE);