2014-01-30 88 views
3

我已經搜索了很多關於我的問題的信息,但我真的不明白我做錯了什麼,我只是想將圖像保存到特定的sdcard文件夾,但folder.mkdir()總是返回false,我得到一個異常無法在SD卡上創建一個文件夾 - mkdir總是返回false

java.io.FileNotFoundException: /mnt/sdcard/sakhcomcache/tv/1.gif: open failed: ENOENT (No such file or directory) 

,當然我在我的權限清單

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

這裏是我的代碼

..... 
private final static String CACHE_PATH = "/sakhcomcache/"; 
public final static String CACHE_FOLDER_TV = "/tv"; 
..... 

public static void saveImageOnSDCard(final Bitmap image, final String cacheFolder, final String name) { 
    new Thread(new Runnable() { 

     @Override 
     public void run() { 
      try { 
       File folder = new File(Environment.getExternalStorageDirectory() + CACHE_PATH + cacheFolder); 
       if (!folder.exists()) { 
        boolean create_succes = folder.mkdir(); 

        //create_succes always false 

        if(create_succes){ 
         Log.i("create_succes", "create_succes"); 
        } 
       } 
       File imageFile = new File(folder +"/"+ name.substring(name.lastIndexOf("/"))); 
       if (!imageFile.exists()) { 
        FileOutputStream out = new FileOutputStream(imageFile); 
        image.compress(Bitmap.CompressFormat.PNG, 100, out); 
        out.flush(); 
        out.close(); 
        Log.i("save succes", "save succes"); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }).start(); 

} 
+0

公共最後靜態字符串CACHE_FOLDER_TV = 「/ TV /」 –

回答

6

試試這個

//創建目錄

File root = new File(Environment.getExternalStorageDirectory() 
       + File.separator + "myDir" + File.separator); 
root.mkdirs(); 
directoryCreated = new File(root, "filename"); 

//保存文件

FileOutputStream out = new FileOutputStream(directoryCreated); 
bm.compress(Bitmap.CompressFormat.JPEG, 100, out); 
bm.recycle(); 
+0

THX的男人,你的解決方案完美地工作 – whizzzkey