Android应用程序如何在应用程序内存储和获取文件

时间:2013-04-02 07:38:55

标签: android file

我有一个应用程序让我通过文件浏览器选择一个文件(该文件存储在sd中),然后读取它。

我想修改它,因此它将文件直接放入应用程序并从“内部”读取文件。我必须把文件放到项目中?我该如何访问它?

3 个答案:

答案 0 :(得分:4)

您可以使用以下代码将文件保存在项目中:

 File cDir = getApplication().getExternalFilesDir(null);
 File saveFilePath = new File(cDir.getPath() + "/" + "yourfilename");

您可以在设备中的应用程序包名称的“files”文件夹中看到已保存的文件。

在您的设备中尝试以下路径:

File manager >> Android >> data >> "your package name" >> files >> new file.

答案 1 :(得分:0)

是的,您可以将文件放入/ assets文件夹,并按如下方式检索:

AssetManager assetManager = getAssets();
InputStream instream = assetManager.open("file.txt");

或res / raw文件夹:

InputStream raw = getResources().openRawResource(R.raw.file);

如果要修改它,您只能将文件写入外部存储(例如SD卡), 或者进入内部存储(在您的应用程序文件夹data/data/package_name/下)。 如果将文件存储到外部存储中,它将一直存在,直到用户手动或以编程方式删除该文件。但是,如果将此文件存储到内部存储中,则会在用户删除应用程序或清除应用程序缓存时将其删除。

答案 2 :(得分:0)

Demo

File myExternalFile;

if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) {
            saveToExternalStorage.setEnabled(false);
        } else {
            myExternalFile = new File(getExternalFilesDir(filepath), filename);
        }

保存外部存储(FileOutputStream)

try {
                FileOutputStream fos = new FileOutputStream(myExternalFile);
                fos.write(myInputText.getText().toString().getBytes());
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            myInputText.setText("");
            responseText.setText("Saved to External Storage.(StorageFile.txt)");

获取外部存储(FileInputStream)

try {
                FileInputStream fis = new FileInputStream(myExternalFile);
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(fis));
                String strLine;
                while ((strLine = br.readLine()) != null) {
                    myData = myData + strLine;
                }
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            myInputText.setText(myData);
            responseText
                    .setText("Data retrieved from Internal Storage.(StorageFile.txt)");