2011-12-14 261 views
1

我得到试图写在Android SD卡的MIDI文件时,出现以下错误:无法写入SD卡上的文件(是一个目录)

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" /> 

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

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

在此先感谢。

+0

有没有在目录/ mnt文件夹file.mid/SD卡/文件夹/ midifiles/SD卡上? – 2011-12-14 16:37:40

回答

0

您与

f.mkdirs(); 

创建目录/mnt/sdcard/folder/midifiles/file.mid你应该只是做:

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; 
} 
+0

这并没有为我工作。血腥的事情根本无法识别给定的路径包含文件的名称,但它会在设备上的文件名称作为文件夹名称的正确路径内创建一个文件夹。 – 2011-12-15 17:32:32

0

你在手机上运行吗?或连接到您的电脑?因为它可能正在您的电脑上查找。