【问题标题】:Can't write to /mnt/sdcard无法写入 /mnt/sdcard
【发布时间】:2014-03-19 04:11:54
【问题描述】:

这个让我难过(Android 4.3)

我有正确的权限:

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

...我明确创建了 /storage/sdcard0/path/to/data.csv 的路径,并且 FileOutputStream 不会引发任何异常。

我尝试通过Environment.getExternalStorageDirectory() 读取路径,但它有一些“模拟”路径。

无论哪种情况,我都看不到文件系统上的文件...

更令人困惑的是MEDIA_MOUNTED_READ_ONLY是mounted_ro ...但事实并非如此。

它看起来像我们使用 /mnt/extSdCard 的另一个应用程序...我尝试在我的应用程序中对其进行硬编码,但这也不起作用。连目录都不见了。这非常令人困惑。

我当然为此打电话给mkdirs(),并创建了 FileOutputStream....

我做错了什么?

【问题讨论】:

  • 运行代码时设备是否已插入计算机?
  • 您应该使用 API 返回的“模拟”路径 - 还要注意 adb 看到的安装位置 与应用程序看到的不同 /使用。
  • 你能查一下this吗?还有this
  • 该设备是通过 USB 插入的 .. 但我在没有 USB 时重新运行它,我仍然遇到同样的问题。
  • 啊...它与正在连接的 USB 有关。但是有一些奇怪的事情正在发生。没有抛出 IOException...

标签: android


【解决方案1】:

试试下面的代码,看看哪里出错了?

        try {
            File mPath = new File(android.os.Environment.getExternalStorageDirectory(),"path/to");
            if (!mPath.exists()) {
                if(!mPath.mkdirs()) {
                    Log.e(getClass().getName(), "Can't Create Folder: "+mPath.getName());
                }
            }
            File mLogFile = new File(mPath, "data.csv");
            FileWriter mFileWriter = null;
            if(mPath.canWrite()) {
                mFileWriter = new FileWriter(mLogFile, true);
                mBufferedWriter = new BufferedWriter(mFileWriter);
            }
            else {
                Log.e(getClass().getName(), "Can't write under Folder: "+mPath.getName());
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多