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)。该数据可以写入文件。仅当数据很小时,此选项才是一个好主意。通过 an 传输大文件Intent不起作用。
  • 使用ContentProvider/ContentResolver并使用openInputStream(Uri uri)Uri放入Intent. 那Uri应该在intent.getData().
  • 将源文件的路径放入Intent中,然后打开文件

您从其他应用程序获得的大多数数据应该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 回答