0

如果我想在我的 android 应用程序中使用 FileInputStream 读取具有文件名的文件,我应该将文件保存在哪里。我可以将它保存在 res/raw 中吗?

4

2 回答 2

1

您不能在运行时将其保存在 res/raw 中,您可以将其保存在 sdcard 或缓存目录中。

为了将文件保存到 SD 卡,您必须具有写入卡的权限。您需要将以下内容添加到您的 AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

接下来,您打开一个文件流,写入它,然后在代码中任何您想这样做的地方关闭它:

String filename = "filename.txt";
File file = new File(Environment.getExternalStorageDirectory(), filename);
FileOutputStream fos;
byte[] data = new String("data to write to file").getBytes();
try {
    fos = new FileOutputStream(file);
    fos.write(data);
    fos.flush();
    fos.close();
} catch (FileNotFoundException e) {
    // handle exception
} catch (IOException e) {
    // handle exception
}
于 2012-04-21T12:29:27.267 回答
0

如果你想将文件包含在你的 .apk 中并在运行时读取它,你应该把它放在assets/你项目的文件夹中,你可以使用:

InputStream istream = context.getAssets().open(FILE_NAME);

到达它。但是,如果您正在寻找从 /sdcard 读取文件的方法,请参阅其他答案。

于 2012-04-21T13:32:23.200 回答