我想在SD卡上写一个MIDI文件。它可以在我的设备上运行,但不能在模拟器中运行。下面是logcat上的错误:

12-25 09:18:27.733: W/ExternalStorage(1951): Error create /sdcard/download/test.mid
12-25 09:18:27.733: W/ExternalStorage(1951): java.io.FileNotFoundException: /sdcard/download/test.mid
12-25 09:18:27.733: W/ExternalStorage(1951):    at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:244)
12-25 09:18:27.733: W/ExternalStorage(1951):    at java.io.FileOutputStream.<init>(FileOutputStream.java:97)
12-25 09:18:27.733: W/ExternalStorage(1951):    at java.io.FileOutputStream.<init>(FileOutputStream.java:168)
12-25 09:18:27.733: W/ExternalStorage(1951):    at java.io.FileOutputStream.<init>(FileOutputStream.java:147)

我已经在清单文件中设置了权限,并将路径从“/sdcard/download/test.mid”更改为environment.getexternalstoragedirectory()+“/download/test.mid”,但仍然不起作用。
仅供参考,我使用Kevin Boone's MidiFile类,下面是我的代码:
String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        mf.writeToFile(Environment.getExternalStorageDirectory()+"/download/test.mid");
    }

最佳答案

好吧,首先确保您拥有适当的权限,如果您不将此添加到您的androidmanifest.xml中

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

其次,你也应该检查下载文件夹是否存在,如果不是你必须创建它。从“AA>类”中检查方法。
如果你看一下凯文的方法,使用它只在特定路径上创建一个文件,它不能保证路径是存在的,那就是你的工作。
mg.writeToFile ("somefile.mid");

关于android - 无法在sdcard android模拟器上写入文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8627984/

10-12 00:20
查看更多