2

我是 Android 编程新手,如果这个问题听起来很愚蠢,请原谅我。我想从 Android 程序中的文件读取和写入。我知道如何在 Java 中做到这一点。

阅读文档后,我编写了以下代码。但是我无法找到该文件的位置。根据文档,它应该在文件夹 data/data/package_name 中。

我有三星 Galaxy S2。我启动了应用程序,然后将其关闭。当我去寻找文件时,我找不到它。我查看了我的文件/数据。但是这个数据文件夹里面没有数据文件夹。我究竟做错了什么?

感谢您的帮助。

来源:1. http://developer.android.com/training/basics/data-storage/files.html 2. http://www.vogella.com/articles/AndroidFileBasedPersistence/article.html#overview

public class MainActivity extends Activity {

private void writeFileToInternalStorage() {
      String eol = System.getProperty("line.separator");
      BufferedWriter writer = null;
      try {
        writer = new BufferedWriter(new OutputStreamWriter(openFileOutput("myfile.txt", MODE_WORLD_WRITEABLE)));
        writer.write("This is a test1." + eol);
        writer.write("This is a test2." + eol);
      } catch (Exception e) {
          e.printStackTrace();
      } finally {
        if (writer != null) {
        try {
          writer.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
        }
      }
}   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    writeFileToInternalStorage();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}
4

4 回答 4

2

您可以使用getExternalFilesDir获取 SDCard 上可以写入文件的目录。null用作一般文件的参数。

路径将是 /mnt/sdcard/Android/data/[package]/files

于 2012-12-16T10:43:51.177 回答
1

除非并且直到您的手机被植根或您正在使用模拟器,否则我认为您将无法看到私人文件。无论如何,在模拟器上,您总是可以执行“adb shell”并执行“cd /data/data/package_name/”来查看文件。

一个不推荐使用的选项是在 openFileOutput(String name, int mode) 函数的模式部分中将标志设置为MODE_WORLD_READABLEMODE_WORLD_WRITEABLE

否则,如果您想通过文件管理器访问它,您始终可以选择将非私人数据存储在手机的外部存储设备上。查看在外部存储上保存文件部分以了解如何执行此操作。

于 2012-12-16T10:46:10.903 回答
0

openFileOutput() 函数创建您的应用程序可以访问的私有文件。与 SharedPreferences 文件(私有文件)相同。我的意思是,偏好文件是隐藏的,但可以被应用程序访问,就像你的文件被隐藏并存储在私人内存中一样。你可以从你的代码中访问,但不能使用文件查看器访问。

于 2012-12-16T10:37:15.397 回答
0

您可以通过以下方式在 data/data/package_name/files 文件夹中读取/写入文件,

来写

BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(new 
                        File(getFilesDir()+File.separator+"MyFile.txt")));
bufferedWriter.write("lalit poptani");
bufferedWriter.close();

读书

BufferedReader bufferedReader = new BufferedReader(new FileReader(new 
File(getFilesDir()+File.separator+"MyFile.txt")));
String read;
StringBuilder builder = new StringBuilder("");

while((read = bufferedReader.readLine()) != null){
    builder.append(read);
}
Log.d("Output", builder.toString());
bufferedReader.close();

在外部存储器中读取和写入,以便您可以直观地查看文件。在此处阅读本教程

于 2012-12-16T10:52:55.330 回答