2012-11-29 28 views
0

我正在編寫一個小應用程序,該應用程序應該接受來自任何其他應用程序的內容,然後將其保存到文件並將其FTP到服務器。Android需要將數據從意圖保存到文件

我所做的一切,但我不能讓這部分工作:

OutputStream f1 = new FileOutputStream("file2.txt"); 
    f1.write(intent.getExtras().get("data")); 
    f1.flush(); 
    f1.close(); 

的意圖是什麼,我得到的發送行爲回來,可以是任何東西。

我收到一個編譯錯誤,其中f1.write與獲取結果不兼容。

請幫忙!

+0

你期待從get(「data」)得到什麼? – njzk2

+0

首先檢查是否在這裏> intent.getExtras()。get(「data」)>數據是否到來? –

+0

@ njzk2我在期待一份辦公文件,但是我說我不在乎,我只是想將它保存到文件中?也許正確的問題是,我從哪裏得到本地文件名,所以我可以FTP原始文件? –

回答

1

你做什麼有

OutputStream f1 = new FileOutputStream("file2.txt"); 
Object data = intent.getExtras().get("data") 
f1.write(data); 

這並不工作,因爲OutputStream只知道怎麼寫bytebyte[]數據。

東西,你可以這樣做:

  • 通過putByteArray(String key, byte[] value)把數據,並通過getByteArray (String key)檢索。該數據可以寫入文件。如果數據很小,這個選項只是一個好主意。通過Intent傳輸大文件不起作用。
  • 使用ContentProvider/ContentResolver並將openInputStream(Uri uri)方法用於您放入IntentUri。那Uri應該在intent.getData()
  • 把路徑源文件進入意向,然後打開該文件
  • ,你從其他應用獲取應該是一個 Uri已經

大多數數據。所以使用

Uri data = intent.getData(); 
InputStream in = getContentResolver.getInputStream(data); 
OutputStream out = new FileOutputStream(new File(Environment.getExternalStorageDirectoy(), "file2.txt")); 
// copy in to out 

可能是最好的選擇。

+0

謝謝,試試吧 - 哇,我還有很多事情要從Java的類中理解。 –

+0

我可以問一個關於如何將InputStream寫入OutputStream的示例嗎? out.write(in)不起作用。 –

+0

@HeinduPlessis例如通過使用http://helpdesk.objects.com.au/java/how-do-i-copy-one-stream-to-another-using-java - 緩衝區大小爲8k(8 x 1024)通常很好 – zapl

-1

試試這個

try { 
      OutputStreamWriter out = new OutputStreamWriter(openFileOutput(
        "filename", 0)); 
      out.write("create text file"); //intent.getExtras().get("data") 
      out.close(); 
      Toast.makeText(this, "The contents are saved in the file.", 
        Toast.LENGTH_LONG).show(); 
     } catch (Throwable t) { 
      Toast.makeText(this, "Exception: " + t.toString(), 
        Toast.LENGTH_LONG).show(); 
     } 

這裏是Example

+0

謝謝你去嘗試 –

+0

請確保

0

請使用下面的代碼保存文件中的數據,它會解決您的問題。

// For Create Files into Internal Memory of Application 
public void mCreateAndSaveFile() { 
    try { 
     FileWriter file = new FileWriter("filename.txt"); 
     file.write(intent.getExtras().get("data")); 
     file.flush(); 
     file.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

不錯,很短...我會試試 –