【问题标题】:Can't write file on SD-card (Is a directory)无法在 SD 卡上写入文件(是目录)
【发布时间】:2011-12-14 16:29:53
【问题描述】:

尝试在 Android SD 卡上写入 midi 文件时出现以下错误:

12-14 16:22:22.219: ERROR/Thread writer(1108): java.io.FileNotFoundException: /mnt/sdcard/folder/midifiles/file.mid (Is a directory) in /mnt/sdcard/folder/midifiles/

这是相关代码:

public void writeFile(String filename, String dir, int bpm) throws Exception {          

    File f = new File(dir,filename);    
    if(!f.exists()) {
        f.mkdirs();

        if(!f.createNewFile()) {
            return; 
        }
    }
    FileOutputStream fos = new FileOutputStream(f);

我正在通过

接收路径
Environment.getExternalStorageDirectory()

相关权限也已包含在内。

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

文件编写器位于外部项目/库中...如果这在任何情况下都有用。

我想这是一个简单的错误,但老实说我不知道​​这里出了什么问题。

提前致谢。

【问题讨论】:

  • 你的sd卡/mnt/sdcard/folder/midifiles/目录下有文件夹file.mid吗?

标签: android file sd-card writer


【解决方案1】:

您正在使用

创建目录 /mnt/sdcard/folder/midifiles/file.mid
f.mkdirs();

你应该这样做:

File f = new File(dir);    
if(!f.exists()) {
    f.mkdirs();

    File f1 = new File(dir,filename);    
    if(!f1.createNewFile()) {
       return; 
    }
}

或者只是

File f = new File(dir,filename);    
if(!f.exist()) {
    f.createNewFile();
    return; 
}

【讨论】:

  • 这不适合我。该死的东西根本无法识别给定的路径包含文件名,但它会在正确的路径中创建一个文件夹,文件名作为设备上的文件夹名。
  • 对不起,不要关注,您是想单独创建目录还是只运行createNewFile
  • 用您现在正在尝试的代码更新您的问题,我相信我们可以解决它
【解决方案2】:

您是否在手机上运行此程序?或连接到您的电脑?因为它可能正在您的电脑上查看。

【讨论】:

    猜你喜欢
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2011-07-30
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多