如何使用Android内部存储

时间:2016-10-16 11:30:10

标签: java android

我正在编写一个应用程序,我希望允许在PC上使用创建的csv文件。 Android具有可在Android上查看的内部存储,可通过PC上的USB访问。我尝试了各种方法来生成文件名:

/data/user/0/com.ed.ilan.ioioterbium/files/documents/2016_9_16_10_28_12.csv
/data/user/0/com.ed.ilan.ioioterbium/files/2016_9_16_10_35_57.csv
2016_9_16_10_46_34.csv

我使用getFilesDir()获得的应用程序的名称,但前两个示例不起作用,因为Java抱怨名称中的斜杠。第三个工作但在(appName)/ files /中没有任何内容可见。我不知道这是出于安全原因设计的,还是文件确实不存在。代码是

String name = getFileName();
try {
        FileOutputStream fOut = new FileOutputStream(name);
        OutputStreamWriter osw = new OutputStreamWriter(fOut);
        osw.write("test1");
        osw.flush();
        osw.close();
        fOut.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

我真的希望文件在内部存储中。我创建了一个名为myData的文件夹,我可以在手机和PC上看到它。问题是:如何指示应用程序写入内部存储。我认识到这不是“安全”,但我只想获取文件。

要写入内部存储,需要在清单中

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

如果我们决定将文件放在云端服务器上,有没有一种标准方法可以做到这一点?

谢谢, 伊兰

2 个答案:

答案 0 :(得分:0)

我了解您要将文件写入手机的Documents文件夹,对不对?如果是这样,以下内容可能对您可以编写.csv文件有帮助。

 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);

答案 1 :(得分:0)

如果你使用的是getFilesDir(),那么它会返回一个特定于android应用程序的路径。用户根本无法访问getFilesDir()返回的路径。

如果您拥有root设备,则可以访问上述路径。

如果您希望只有您的应用程序可以访问您存储的文件,请使用getFilesDir(),否则您可以使用

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).getAbsolutePath();