为什么 txt 文件没有在 Android 中创建?
Why the txt file did not create in Android?
我在 Android 开发,我找到了一个示例代码,它像下面的代码一样读取和写入数据到 txt 文件:
以下函数用于将数据写入文本文件:
private static final String MESH_DATA_FILE_NAME = "TEST.txt";
public void save(Activity activity) {
try {
int i;
Context context = activity;
FileOutputStream fos = activity.openFileOutput(MESH_DATA_FILE_NAME, context.MODE_PRIVATE);
String str;
for (i = 0; i < 10; i++) {
str += "##" + i;
}
fos.write(str.getBytes());
fos.write('\n');
fos.close();
} catch (Exception e) {
Log.e(TAG, "saveMeshInfo exception: " + e);
}
}
从文本文件中读取数据的代码如下:
public void read(Activity activity) {
try {
FileInputStream fin = activity.openFileInput(MESH_DATA_FILE_NAME);
BufferedReader br = new BufferedReader(new InputStreamReader(fin));
Log.i(TAG, "From file [" + MESH_DATA_FILE_NAME + "]...");
// Read the information
String text = br.readLine();
String[] strs = text.split("##", 4 + FloodMesh.IV_LEN + FloodMesh.KEY_LEN);
fin.close();
} catch (Exception e) {
}
}
调用read
函数时可以看到日志中的数据,所以TEST.txt应该是存在的。
但是我没有在 android phone.
上通过文件管理器应用程序找到 TEST.txt
- 为什么我在 android phone 上找不到 TEST.txt 文件?
- 如果TEST.txt不存在,为什么read函数可以读取数据?
- 如何找到 TEST.txt 文件?
您已在您的应用程序目录 (/data/data/your.package) 中创建了文件,但您无法通过文件管理器访问该目录。该文件存在,这就是为什么您可以通过方法读取它但看不到它的原因。在模拟器上测试您的代码 - 然后您将能够看到文件
如果你想更好地测试它并且你不想使用模拟器你可以将文件保存在 sdcard 上,你可以通过文件管理器访问它并且你将能够看到它
你的文件将在 /data/data/<your package name>/files/
- 你有 root 和资源管理器来查看这个或者你在 adb 上使用 运行-as 命令来浏览文件
有了正确的权限,您还可以将文件写入 SD 卡 - 然后访问它更容易 - 取决于您的需要
你没有找到TEST.txt因为它处于隐私模式,你需要写MODE_APPEND
,你应该检查http://developer.android.com/reference/android/content/Context.html。
activity.openFileOutput()
该方法打开一个与此Context的应用程序包关联的私有文件进行写入。见 doc
我在 Android 开发,我找到了一个示例代码,它像下面的代码一样读取和写入数据到 txt 文件:
以下函数用于将数据写入文本文件:
private static final String MESH_DATA_FILE_NAME = "TEST.txt";
public void save(Activity activity) {
try {
int i;
Context context = activity;
FileOutputStream fos = activity.openFileOutput(MESH_DATA_FILE_NAME, context.MODE_PRIVATE);
String str;
for (i = 0; i < 10; i++) {
str += "##" + i;
}
fos.write(str.getBytes());
fos.write('\n');
fos.close();
} catch (Exception e) {
Log.e(TAG, "saveMeshInfo exception: " + e);
}
}
从文本文件中读取数据的代码如下:
public void read(Activity activity) {
try {
FileInputStream fin = activity.openFileInput(MESH_DATA_FILE_NAME);
BufferedReader br = new BufferedReader(new InputStreamReader(fin));
Log.i(TAG, "From file [" + MESH_DATA_FILE_NAME + "]...");
// Read the information
String text = br.readLine();
String[] strs = text.split("##", 4 + FloodMesh.IV_LEN + FloodMesh.KEY_LEN);
fin.close();
} catch (Exception e) {
}
}
调用read
函数时可以看到日志中的数据,所以TEST.txt应该是存在的。
但是我没有在 android phone.
上通过文件管理器应用程序找到 TEST.txt- 为什么我在 android phone 上找不到 TEST.txt 文件?
- 如果TEST.txt不存在,为什么read函数可以读取数据?
- 如何找到 TEST.txt 文件?
您已在您的应用程序目录 (/data/data/your.package) 中创建了文件,但您无法通过文件管理器访问该目录。该文件存在,这就是为什么您可以通过方法读取它但看不到它的原因。在模拟器上测试您的代码 - 然后您将能够看到文件
如果你想更好地测试它并且你不想使用模拟器你可以将文件保存在 sdcard 上,你可以通过文件管理器访问它并且你将能够看到它
你的文件将在 /data/data/<your package name>/files/
- 你有 root 和资源管理器来查看这个或者你在 adb 上使用 运行-as 命令来浏览文件
有了正确的权限,您还可以将文件写入 SD 卡 - 然后访问它更容易 - 取决于您的需要
你没有找到TEST.txt因为它处于隐私模式,你需要写MODE_APPEND
,你应该检查http://developer.android.com/reference/android/content/Context.html。
activity.openFileOutput()
该方法打开一个与此Context的应用程序包关联的私有文件进行写入。见 doc