找不到创建的文件

时间:2012-12-25 13:34:30

标签: android file

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

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。 谁能告诉我应用程序正在写的路径?

好的,我现在有了这个:

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); 无法找到原因。 我修改了权限

的清单

3 个答案:

答案 0 :(得分: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设备即可运行。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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