【问题标题】:Can't find created file找不到创建的文件
【发布时间】:2012-12-25 13:34:30
【问题描述】:

我正在为 Android 编写我的小应用程序。我正在尝试创建文件。这是一个代码sn-p:

final String TESTSTRING = new String("Hello Android");                 
FileOutputStream fOut = openFileOutput("samplefile.txt",Context.MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fOut); 
osw.write(TESTSTRING);
osw.flush();
osw.close();

FileInputStream fIn = openFileInput("samplefile.txt");
InputStreamReader isr = new InputStreamReader(fIn);
char[] inputBuffer = new char[TESTSTRING.length()];

isr.read(inputBuffer);

String readString = new String(inputBuffer);

boolean isTheSame = TESTSTRING.equals(readString);

if(isTheSame) {
    TextView mLat=(TextView) findViewById(R.id.textView1);
    mLat.setText(String.valueOf(isTheSame));     
}   

我无法使用文件管理器找到这个创建的 samplefile.txt。 谁能告诉我app在哪里写的路径?

好的,现在我有了这个:

String pathToExternalStorage = Environment.getExternalStorageDirectory().toString();
     File appDirectory = new File(pathToExternalStorage + "/" + "testowa", "new_file.txt");
     try{
         OutputStream os = new FileOutputStream(appDirectory);
         os.write(pathToExternalStorage.getBytes());
         os.flush();
         os.close();
     }
     catch(IOException e)
     {

     }

OutputStream os = new FileOutputStream(appDirectory) 抛出异常; 找不到原因。 我修改了具有权限的清单

【问题讨论】:

    标签: android file


    【解决方案1】:

    该文件位于 /data/data/com.yourpackagename/files/filename.txt 中,除非设备已植根,否则该文件是隐藏的。您可以通过从创建文件的目录复制文件来访问该文件。

    从命令行:

    复制文件

        adb -d shell 
        run-as com.yourpackagename 
        cat /data/data/com.yourpackagename/files/filename.txt > /sdcard/filename.txt
    

    也可以用于 SQLite 数据库

        cat /data/data/com.yourpackagename/databases/dbname.db > /sdcard/dbname.sqlite 
    

    此解决方案无需 root 设备即可工作。

    【讨论】:

      【解决方案2】:

      它是在/data/data/your.package.name/files 中创建的。但是,对于文件管理器来说,这个目录是不可见的(除非他们有 root 权限)。

      【讨论】:

      • 所以如果我希望文件对用户可见,我需要使用外部驱动器吗?
      • 是的,看看Environment.getExternalStoragePublicDirectory,它会返回您可以放置​​外部可见文件的目录。
      【解决方案3】:

      您可以使用getFileStreamPath(name) 获取使用openFileOutput(name) 创建的文件的路径。但文件管理器应用需要 root 权限才能查看此路径。

      【讨论】:

        猜你喜欢
        • 2016-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-11
        • 1970-01-01
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多