我正在使用此代码存储一个文本文件,其中包含'开始'按下应用程序中的按钮并进一步阅读。我试图将文件保存在用户安装应用程序的内存中(即SD卡或手机内存)。我正在存储的文件被读取并显示在logcat中,但我无法找到它保存在内存中的位置(手机或SD)。
public void write_data(String s, Queue<SeismicDataPoint> t) throws IOException {
String path = getBaseContext().getFilesDir().getAbsolutePath();
File dir = new File(path);
if (!dir.exists())
dir.mkdirs();
FileOutputStream fOut = getBaseContext().openFileOutput(s + ".txt", MODE_APPEND);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
SeismicDataPoint temp ;
for(int i = 0; i < bufferSize; i++)
{
temp=t.poll();
osw.append(temp.timestamp+" "+temp.x+" "+temp.y+" "+temp.z+"\n");
}
osw.flush();
osw.close();
}
public void read_data(String s) throws IOException {
BufferedReader b = new BufferedReader(new FileReader(s+".txt"));
while(true){
String osw = b.readLine();
if(osw==null)break;
}
这也是清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mycompany.falldetect" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
答案 0 :(得分:1)
getFilesDir指向内部存储目录。如果你想在外部存储东西,那么你应该使用路径作为
String path = Environment.getExternalStorageDirectory().toString();
另请阅读http://www.grokkingandroid.com/how-to-correctly-store-app-specific-files-in-android/
更新:检查此代码
private void saveFile() {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/files");
myDir.mkdirs();
File file = new File (myDir, "sample.txt");
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
PrintWriter pw = new PrintWriter(out);
pw.println("my sample txt");
pw.flush();
pw.close();
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
答案 1 :(得分:0)
应用程序私有数据文件存储在<internal_storage>/data/data/<package>
中
如果文件创建为MODE_PRIVATE
,则无法通过FileManager等应用程序查看/访问该文件。