2013-05-18 49 views
1

我正在開發一個應用程序,我想將一些位圖保存到SD卡上。我已經看過很多例子和其它問題,從我做了下面的代碼:保存的位圖不出現在SD卡上

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); 
String dirPath = Environment.getExternalStorageDirectory().toString() + "/myFolder"; 
File dir = new File(dirPath); 
dir.mkdirs(); 
String fileName = "bitmapname.jpg"; 
File file = new File(dirPath, fileName); 
FileOutputStream fileOutPutStream; 
try { 
    boolean created = file.createNewFile(); 
    Log.d("Checks", "File created: " + created); 
    fileOutPutStream = new FileOutputStream(file); 
    fileOutPutStream.write(byteArrayOutputStream.toByteArray()); 
    fileOutPutStream.close(); 
} catch (FileNotFoundException e) { 
    Log.d("Checks", "FileNotFoundException"); 
    e.printStackTrace(); 
} catch (IOException e) { 
    Log.d("Checks", "IOException"); 
    Log.d("Checks", e.getMessage()); 
    e.printStackTrace(); 
} 

我看不出有什麼不對的代碼。它不會給出任何錯誤,我的應用程序不會崩潰。但是,當我將手機連接到我的電腦並打開SD卡時,我看不到「myFolder」文件夾,我無法在任何地方找到保存的圖像。你們有什麼想法,爲什麼這是?

編輯:我注意到我可以在Android圖庫中看到保存的位圖,它們確實位於名爲「myFolder」的文件夾中。但是,當我將手機連接到電腦並瀏覽我的SD卡時,我仍然看不到它們。

回答

1

從我的經驗,我有類似的問題,當我忘記fileOutPutStream.flush();close()之前。

+0

現在呢? (既然我理解了這個問題,它既不是批評也不是澄清要求)。批評可能是:「你忘了......」。 –

+0

好吧,我添加了'fileOutPutStream.flush();'但沒有幫助:/ – Zero

1

您確定您正在設置寫入SD卡的權限嗎?嘗試設置這樣一條:

WRITE_EXTERNAL_STORAGE 

編輯: 好了,試試這個:

Environment.getExternalStorageDirectory().getAbsolutePath() 

相反的:

Environment.getExternalStorageDirectory().toString() 

甚至創建一個目錄如下:

File dir = new File(Environment.getExternalStorageDirectory() + 
         File.separator + 
         "myFolder"); 
    dir.mkdirs(); 
+0

是的,我已經做到了:) – Zero