【问题标题】:Android saving file to SD Card, not internal storageAndroid将文件保存到SD卡,而不是内部存储
【发布时间】:2014-08-27 15:46:15
【问题描述】:

我知道有人对此有疑问,但出于某种原因,似乎没有什么对我有用。 我正在尝试从我的应用程序中获取 2 个文本文件以保存到 SD 卡中。它正确创建目录和文件,但始终创建​​到内部存储,而不是外部存储。我在 Manifest 中也有适当的权限。

try {
        File sdCard = Environment.getExternalStorageDirectory();
        File myFile = new File(sdCard.getAbsolutePath() + "/rlgl");
        myFile.mkdir();
       // myFile.createNewFile();
        String newLine = System.getProperty("line.separator");
        File file = new File(myFile, "rlgls.txt");
        if(file.exists())  {

        } else if (!file.exists()){
        FileOutputStream fOut = new FileOutputStream(file);
        OutputStreamWriter myOutWriter = 
                                new OutputStreamWriter(fOut);
        for (int i = 0; i < 30; i++) {
        myOutWriter.append("0.0" + newLine);
        }
        myOutWriter.close();
        fOut.close();
        }
        } catch (IOException e) {
            e.printStackTrace();
        }

这是我正在使用的代码。我遵循了其他 Stackoverflow 响应的指示,但它从未进入 SD 卡。有什么我做错了吗?还有一个后续问题是我有办法使用上面的代码来使文件对用户不可见。他们应该没有理由打开它们。提前致谢。

【问题讨论】:

  • Android 保存到默认存储。您必须在设备系统设置中手动设置默认存储
  • Android API 实际上并没有为您提供获取设备 SD 卡的方法。 getExternalStorageDirectory 方法将返回默认的共享存储,可能是也可能不是 SD 卡。
  • 感谢您的信息。我还有很多东西要学。我还有一个问题。我知道放一个“。”在文件或目录名称前面使其不可见,但这是否也意味着应用程序也无法读取它?我正在对此进行试验,当有“。”时,我的应用程序无法读取/写入文件。在他们的名字前面。

标签: android file external private


【解决方案1】:

它会正确创建目录和文件,但始终创建​​到内部存储,而不是外部存储

不,它会将它们放在外部存储上。 用户看到的内部存储是开发者看到的external storageInternal storage 可通过getFilesDir() 等方法访问。这些都不是removable storage,比如某种形式的SD卡。

还有一个后续问题,我是否可以使用上述代码使文件对用户不可见。他们应该没有理由打开它们。

然后将它们放在内部存储中。

当有“。”时,我的应用程序无法读取/写入文件。在他们的名字前面

我觉得这很难相信。 . 前缀使它们在某些文件浏览器中默认不显示,但仅此而已。用户可以访问它们(如果它们在外部存储上),应用程序也可以访问它们(遵守与任何其他文件相同的规则,那些没有前导 . 的文件)。

【讨论】:

  • 再次测试后,我意识到如果我放一个“。”在文件名前面,它仍然可以被写入/读取。但是,如果我放一个“。”在目录名前面隐藏文件夹,不能。不幸。
猜你喜欢
  • 2012-05-16
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-11
  • 2015-06-15
  • 1970-01-01
相关资源
最近更新 更多