如何从活动外部将文件写入Android设备?

如何从活动外部将文件写入Android设备?,android,serialization,android-activity,android-file,data-access,Android,Serialization,Android Activity,Android File,Data Access,我的主要活动是创建一个名为fileSaver的新对象。我正在尝试将对象“数据”序列化到文件。FileSave有一个方法serialize(),用于创建文件 private String FILE_NAME = "file.dat"; FileSaver fileSaver = new FileSaver(); Data data = new Data(); data.setEmail("aaa@bbb.com"); fileSaver.serialize((Object) data,FILE_N

我的主要活动是创建一个名为fileSaver的新对象。我正在尝试将对象“数据”序列化到文件。FileSave有一个方法serialize(),用于创建文件

private String FILE_NAME = "file.dat";
FileSaver fileSaver = new FileSaver();
Data data = new Data();
data.setEmail("aaa@bbb.com");
fileSaver.serialize((Object) data,FILE_NAME);
问题是我无法在活动之外创建文件。当我尝试相同的内部活动时,它会创建该文件。我在尝试路径,但没有成功。我知道从活动创建文件时,它会保存在/data/data/my_package_name/files中,但如何从活动类外部访问该文件

类文件保存器:

public class FileSaver {

public void serialize(Object objToSerialize,String fileName) {

    try {
        ObjectOutputStream out = new ObjectOutputStream(
                new FileOutputStream(fileName));
        out.writeObject(objToSerialize);
        out.close();
        System.out.println("Object : " + objToSerialize.getClass()
                + " serialized successfully");
    } catch (Exception ex) {
        System.out.println("Error Saving Object to File :"
                + ex.getMessage());
        ex.printStackTrace();
    }
}
}

谢谢。

您必须将上下文传递到外部java类,并使用该上下文,使用此openFileOutput()方法在android设备内存中创建并写入文件

您可以将文件保存在SD卡中

ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(Environment.getExternalStorageDirectory()+File.separator+filename));
//这里filename是字符串和环境中的输入文件名。getExternalStorageDirectory()提供SDCard目录


还要确保您在Android清单文件中添加了
,发布您的日志。您是否收到任何错误消息?以及您打算如何在活动之外执行此操作??logcat:12-01 18:45:39.001:I/System.out(1621):将对象保存到文件时出错:/file.dat:打开失败:EROFS(只读文件系统)12-01 18:45:39.029:W/System.err(1621):java.io.FileNotFoundException:/file.dat:open失败:用于序列化的EROFS(只读文件系统)对象是在activity内部创建的,因此我认为它应该能够以某种方式工作。您能解释一下这一点吗,或者可以添加一些代码?我不太明白。谢谢。调用serialize方法时如何传递上下文?fileSaver.serialize((对象)数据、文件名、上下文);我知道openFileOutput()方法,但知道如何在另一个类中使用该方法。我的问题是如何将它与活动的上下文联系起来?我到处都找不到例子。谢谢:)谢谢。这是一个好主意(我会尝试),但我的想法是将该文件写入/data/data/my_apk_package_name/文件,应用程序在其中拥有存储文件的所有权限。我正在尝试按照kumaand上面的建议做一些事情,但我不确定如何传输上下文,然后使用openFileOutput()方法。我在谷歌上搜索了几乎一整天,但找不到一些代码示例。