2011-11-28 73 views
0

官方的Facebook應用程序有一個錯誤,當你試圖共享一個共享意圖的圖像,圖像被從SD卡刪除。這是你必須使用圖像的URI的圖像傳遞到Facebook應用程序的方式:如何創建File對象的獨立完整副本?

File myFile= new File(Environment.getExternalStorageDirectory(), "car.jpg"); 
Uri uri = Uri.fromFile(myFile); 
i.putExtra(Intent.EXTRA_STREAM, uri); 

然後,假設,如果我創建從原來的myFile對象的副本,我通過副本的URI到Facebook應用程序,然後,我的原始圖像將不會被刪除。

我試着用這個代碼,但它不工作,原始圖像文件還是會被刪除:

File myFile= new File(Environment.getExternalStorageDirectory(), "car.jpg"); 
    File auxFile=myFile.getAbsoluteFile();  
    Uri uri = Uri.fromFile(auxFile); 

誰能告訴我該怎麼做沒有文件的精確副本重定向到原始文件?

回答

1

請檢查:Android file copy

該文件是由字節複製字節所以舊的文件沒有提及維持。

+0

你沒明白我的問題,你的鏈接沒有回答我的問題 – NullPointerException

+0

對不起,我編輯的迴應。如果你做了一個文件的字節拷貝,則不應該保留引用。檢查鏈接中問題的第一個答案。希望這可以幫助。 –

+0

謝謝,但可能我沒有完全解釋這個問題。我不需要outputstream,我沒有輸入流。我有一個File對象,我需要創建一個對象的獨立副本,另一個File對象具有相同的內容,並且沒有引用。 – NullPointerException

1

這裏,這應該能夠創建文件的副本:

private void CopyFile() { 

     InputStream in = null; 
     OutputStream out = null; 
     try { 
      in = new FileInputStream(<file path>); 
      out = new FileOutputStream(<output path>); 
      copyFile(in, out); 
      in.close(); 
      in = null; 
      out.flush(); 
      out.close(); 
      out = null; 
     } catch(Exception e) { 
      Log.e("tag", e.getMessage()); 
     }  
} 
private void copyFile(InputStream in, OutputStream out) throws IOException { 
    byte[] buffer = new byte[1024]; 
    int read; 
    while((read = in.read(buffer)) != -1){ 
     out.write(buffer, 0, read); 
    } 
} 
+0

謝謝,但你沒有回答我的問題。可能我沒有完全解釋這個問題。我不需要outputstream,我沒有輸入流。我有一個File對象,我需要創建一個對象的獨立副本,另一個具有相同內容的File對象。 – NullPointerException

+0

這應該創建一個完全重複的文件。創建後,您可以指定另一個File對象並將新文件分配給它。你只需要提供你的文件路徑到這個代碼,它會將你的文件複製到SD卡上,並在其後附加2。 –

相關問題