2013-06-26 25 views
0

解決Android不作導演

(MKDIR)我改變它利特爾位

File path = new File(Environment.getExternalStorageDirectory(), "AndroidPaint"); 
     File file = new File(path, tmpImg); 
     path.mkdirs(); 
     if(!file.exists()) { 
      file.createNewFile(); 
     } 
     os = new FileOutputStream(file); 
     source.compress(CompressFormat.JPEG, 100, os); 
     os.flush(); 
     os.close(); 

還的問題可能是源位圖我發現則是空

問題

我的Android程序我想保存位圖在外部存儲我獲得許可f或做

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

,並得到了該

public class SaveOpen { 
public static void save(Bitmap source) { 
    String tmpImg = String.valueOf(System.currentTimeMillis()) + ".jpg"; 
    OutputStream os = null; 
    try { 
     File dir = new File(Environment.getExternalStorageDirectory(), "myapp"); 
     if (!dir.mkdirs()) { 
      Log.e("save", "Directory not created"); 
     } 
     File file = new File(dir, tmpImg); 
     if(!file.exists()) { 
      file.createNewFile(); 
     } 
     os = new FileOutputStream(file); 
     source.compress(CompressFormat.JPEG, 100, os); 
     os.flush(); 
     os.close(); 
    } 
    catch (IOException e) { 
     Log.d("save", e.getMessage()); 
    } 
} 

}

一些代碼,但是當我按下保存在我的應用程序按鈕,我得到

打開失敗:ENOTDIR(不是目錄)

異常,我做錯了什麼?我想所有的引導我在谷歌找到,請幫助

+0

試試這個, 刪除'如果{ Log.e( 「拯救」,「目錄沒有創建(()dir.mkdirs!) 「); }' 並且改變這個 'File file = new File(dir,tmpImg); file.mkdirs();如果(!file.exists()){' – Varun

+0

@Varun仍然>打開失敗:ENOTDIR(不是目錄) – Mariusz

回答

0

試試這個:

String myDir = Environment.getExternalStorageDirectory() + "/myapp"; 

File dir = new File(myDir); 
+0

仍然不起作用 – Mariusz

+0

@Mariusz:使用'Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);'爲保存圖像或文件 –

0

在舊設備上訪問外部STORGE是不可能的,如果有是USB連接(磁盤模式),這樣登錄是什麼Environment.getExternalStorageDirectory()返回你的情況。

+0

我在模擬器上工作,但在真實設備上(不含)也不能創建導演 – Mariusz

0

我遇到了同樣的問題,它好像是Android上的一個bug,我的mkdir在命令行中被adb也失敗了。然後我嘗試重新啓動手機,永遠不會再發生。

0

我通過附加權限解決的問題來訪問外部存儲:

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