4

我有一个应用程序让我通过文件资源管理器选择一个文件(文件存储在 sd 上),然后读取它。

我想修改它,所以它将文件直接放入应用程序并从“内部”读取文件。我必须将文件放入项目的哪里?我怎样才能访问它?

4

3 回答 3

4

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

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

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

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

File manager >> Android >> data >> "your package name" >> files >> new file.
于 2016-07-20T10:44:54.127 回答
0

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

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

或 res/raw 文件夹:

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

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

于 2013-04-02T07:40:43.503 回答
0

演示

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)");
于 2013-04-02T07:44:56.537 回答