为什么 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
  1. 为什么我在 android phone 上找不到 TEST.txt 文件?
  2. 如果TEST.txt不存在,为什么read函数可以读取数据?
  3. 如何找到 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