0

我的应用程序正在创建一个文件夹,然后在 sdcard 上创建一个 xml 文件。但一段时间后,文件夹和文件被删除。该文件用于存储应用程序数据的备份。

我不需要新的东西来进行备份,而是描述它发生的原因。该文件夹在 sdcard 的根目录中创建,名称为“backup”。

这就是我创建文件夹和文件的方式:

File path = new File(Environment.getExternalStorageDirectory() + "/backup/tet/");
path.mkdirs();
File backupdir = new File(path, getDateTime() + ".xml");
fos = new FileOutputStream(backupdir);
fos.write(encodeDb(ctx).getBytes());
fos.close();

这就是我读取文件的方式:

boolean parsed = false;
File file = new File(Environment.getExternalStorageDirectory() + "/backup/tet/" + filename);
fis = new FileInputStream(file);
byte[] buffer = new byte[(int) file.length()];
fis.read(buffer, 0, (int) file.length());
parsed = decodeDb(ctx, new String(buffer));
fis.close();

我希望你能帮助我讨论这个问题。

4

2 回答 2

1

也许其他一些应用程序也使用了一个名为“备份”的文件夹,然后将其删除?我会以不同的方式命名文件夹,以确保它特定于您的应用程序。

于 2013-08-10T23:28:30.897 回答
1

通常不建议为您的应用程序创建一个新文件夹,因为它可能导致其他应用程序使用相同的文件夹(如 Ilya 建议的那样)以及使 SD 卡混乱(以及用户喜欢什么?)相反,最好使用命令 getExternalFilesDir()。以下是 Google开发者指南的内容:

如果您使用 API 级别 8 或更高版本,请使用 getExternalFilesDir() 打开一个文件,该文件代表您应该保存文件的外部存储目录。此方法接受一个类型参数,该参数指定您想要的子目录的类型,例如 DIRECTORY_MUSIC 和 DIRECTORY_RINGTONES(传递 null 以接收应用程序文件目录的根目录)。如有必要,此方法将创建适当的目录。通过指定目录的类型,您可以确保 Android 的媒体扫描器将正确分类您在系统中的文件(例如,铃声被识别为铃声而不是音乐)。如果用户卸载您的应用程序,该目录及其所有内容将被删除。

于 2013-08-10T23:38:21.237 回答