我正在为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); 无法找到原因。 我修改了权限
的清单答案 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权限)。