2013-10-16 94 views
1

我成功地將圖像保存到按鈕單擊文件夾中的SD卡。圖像保存到SD卡覆蓋現有的文件

我遇到的問題是圖像被重寫,如果我節省超過1個文件,因爲文件名是相同的,所以它覆蓋退出圖像已經先前保存現有的圖像。

會不會有什麼辦法,我將能夠使它所以當圖像保存,它有不同的名稱,每次所以它不會覆蓋保存?

在此先感謝!

這是我到目前爲止有:

OutputStream output; 

     Time now = new Time(); 
     now.setToNow(); 
     String time = now.toString(); 

     // Retrieve the image from the res folder 
     BitmapDrawable drawable = (BitmapDrawable) mImageView.getDrawable(); 
     Bitmap bitmap1 = drawable.getBitmap(); 

     // Find the SD Card path 
     File filepath = Environment.getExternalStorageDirectory(); 

     // Create a new folder in SD Card 
     File dir = new File(filepath.getAbsolutePath() 
       + "/Wallpapers/"); 
     dir.mkdirs(); 

     // Create a name for the saved image 
     File file = new File(dir, "Wallpaper"+ time); 

     // Show a toast message on successful save 
     Toast.makeText(getActivity(), "Wallpaper saved with success!", 
       Toast.LENGTH_LONG).show(); 
     try { 

      output = new FileOutputStream(file); 

      // Compress into png format image from 0% - 100% 
      bitmap1.compress(Bitmap.CompressFormat.PNG, 100, output); 
      output.flush(); 
      output.close(); 
     } 

     catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return false; 

回答

1

使用:

Time now = new Time(); 
now.setToNow(); 
String time = now.toString(); 

並獲得您正試圖保存文件的時間。

然後,將它附加到文件名的末尾。 這樣,您的文件永遠不會有相同的名稱,但始終具有相同的前綴。

要檢查是否存在一個目錄,

File dir = new File(Environment.getExternalStorageDirectory() + "/mydirectory"); 
if(dir.exists() && dir.isDirectory()) { 
    // do something here 
} 

然而,沒有SD卡的設備將無法正常工作。

+0

我已更新我的代碼,以便您可以看到它現在看起來像什麼,它仍然不工作的一些奇怪的原因。它只有在我專門更改文件名時才起作用? – Jack

+0

我想這是因爲你每次都在製作同一個目錄。 Cehck如果目錄存在的mkdir只有當不存在 –

+0

它你能告訴我該怎麼做? – Jack

1
Would there be any way I would be able to make it so when the image saves, 
it saves with a different name each time so it doesn't overwrite? 

是的,你也需要檢查具有相同名稱的文件在目錄中已有的或不保存之前使用File.exists()。這樣做:

File file = new File(dir, "Wallpaper.jpg"); 
    if(file.exists()){ 
     // assign different name to file 
    } 
    else{ 
     // file not present with same name 
    } 
+0

有沒有必要檢查文件是否存在,並分配一個新的名字了。看看我的答案 –