为什么txt文件没有在Android中创建?

时间:2015-07-07 11:50:08

标签: android fileinputstream fileoutputstream

我在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手机上找到 TEST.txt 文件管理器应用程序。

  1. 为什么我在Android手机上找不到 TEST.txt 文件?
  2. 如果 TEST.txt 不存在,为什么read函数可以读取数据?
  3. 如何找到 TEST.txt 文件?

4 个答案:

答案 0 :(得分:3)

您已在app目录(/data/data/your.package)中创建了文件,并且您无法通过文件管理器访问该文件。该文件存在,这就是为什么你可以通过方法读取它,但你不会看到它。在模拟器上测试您的代码 - 比您能够看到文件

如果你想更好地测试它并且你不想使用模拟器你可以在sdcard上保存文件,你可以通过文件管理器访问它,你将能够看到它

答案 1 :(得分:0)

您的文件将位于/data/data/<your package name>/files/ - 要么有root用户,要么有资源管理器才能看到这个,或者您在adb上使用run-as命令来浏览文件 有了正确的权限,您还可以将文件写入SD卡 - 然后访问它更容易 - 取决于您的需求

答案 2 :(得分:0)

你没有找到TEST.txt,因为它处于私人模式,你需要写MODE_APPEND,你应该检查http://developer.android.com/reference/android/content/Context.html

答案 3 :(得分:0)

activity.openFileOutput()此方法打开与此Context的应用程序包关联的私有文件以进行编写。见doc