0

私は、他のアプリからのコンテンツを受け入れ、それをファイルに保存し、FTP でサーバーに送信する小さなアプリを作成しています。

すべてを実行しましたが、この部分を機能させることができません:

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

意図は、送信アクションから返されるものであり、何でもかまいません。

f1.write が get 結果と互換性がないというコンパイル エラーが発生します。

助けてください!

4

3 に答える 3

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を使用し、に入れたaのメソッドを使用しopenInputStream(Uri uri)ます。それはにあるはずです。UriIntentUriintent.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

おそらく最良の選択肢です。

于 2012-11-29T11:08:31.290 に答える
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();
    }
}
于 2012-11-29T11:10:18.203 に答える
-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();
        }

ここに例があります

于 2012-11-29T10:56:38.230 に答える