如何从活动外部将文件写入Android设备?
我的主要活动是创建一个名为fileSaver的新对象。我正在尝试将对象“数据”序列化到文件。FileSave有一个方法serialize(),用于创建文件如何从活动外部将文件写入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
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()方法。我在谷歌上搜索了几乎一整天,但找不到一些代码示例。