谨慎与否,外部存储仍然是唯一的途径。在设备上没有root访问权限,除非您在设备上的应用程序中阅读,否则您无法真正获得任何内部内容。该文档为创建外部文件的位置提供了非常可靠的指导,如果您使用API 8级或更高版本,则可以使用几个额外的功能。我确定你知道这个页面,但是这里反正是07000
如果你需要任何文件io示例代码…我想我可以挖一些…
编辑 – 我将首先按照上述文档中的准则首先确认存储的状态。我不幸的是没有任何经验可以在Java中附加文件,所以其他人肯定会更有资格回答。这不包括追加,但我有一个我的个人应用程序中的备份例程,看起来像这样。
File backupPath = Environment.getExternalStorageDirectory();
backupPath = new File(backupPath.getPath() + "/Android/data/com.maximusdev.bankrecord/files");
if(!backupPath.exists()){
backupPath.mkdirs();
}
FileOutputStream fos;
try {
fos = new FileOutputStream(backupPath.getPath() + "/recordsbackup.txt");
if(okaytowrite){
for(int i = 0; i < count; ++i){
entry = adapter.getItem(i);
fos.write(entry.toString().getBytes());
fos.write("\n".getBytes());
fos.write(String.valueOf(entry.dateTime).getBytes());
fos.write("\n".getBytes());
fos.write(String.valueOf(entry.sign).getBytes());
fos.write("\n".getBytes());
fos.write(String.valueOf(entry.cleared).getBytes());
fos.write("\n".getBytes());
fos.write(String.valueOf(entry.transDate).getBytes());
fos.write("\n".getBytes());
fos.write(entry.category.getBytes());
fos.write("\n".getBytes());
}
}
fos.close();
Toast.makeText(this, "Backup Complete", Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
AlertDialog.Builder delmessagebuilder = new AlertDialog.Builder(this);
delmessagebuilder.setCancelable(false);
delmessagebuilder.setMessage("File Access Error");
delmessagebuilder.setNeutralButton("Okay", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
delmessagebuilder.create().show();
} catch (IOException e) {
e.printStackTrace();
AlertDialog.Builder delmessagebuilder = new AlertDialog.Builder(this);
delmessagebuilder.setCancelable(false);
delmessagebuilder.setMessage("File Access Error");
delmessagebuilder.setNeutralButton("Okay", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
delmessagebuilder.create().show();
}
一旦我准备好写,我从ArrayAdapter(适配器)中拉出一个自定义对象(条目),并将字段值转换为字符串,并使用getBytes()传递给FileOutputStream写入函数。我已经做了一些研究,还有很多其他选项用于Java / Android中的文件写入,例如FileWriter类,因此进行了进一步的研究。