0

我正在为 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) 上引发异常;找不到原因。我修改了具有权限的清单

4

3 回答 3

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设备即可工作。

于 2014-06-24T21:18:51.057 回答
0

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

于 2012-12-25T13:42:03.127 回答
0

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

于 2012-12-25T13:42:28.980 回答