Android私有数据文件



我一直在尝试做一些研究和学习android。我不明白下面的代码是做什么的。

public class LogFile extends Activity {
private final static String STORETEXT = "storetext.txt";
private TextView write log;
public void readFileInEditor() {
    try {
        InputStream in = openFileInput(STORETEXT);
        if (in != null) {
            InputStreamReader tmp = new InputStreamReader(in);
            BufferedReader reader = new BufferedReader(tmp);
            String str;
            StringBuilder buf = new StringBuilder();
            while ((str = reader.readLine()) != null) {
                buf.append(str + "n");
            }
            in.close();
            writelog.setText(buf.toString());
        }
    } catch (java.io.FileNotFoundException e) {
        // that's OK, we probably haven't created it yet
    } catch (Throwable t) {
        Toast.makeText(this, "Exception: " + t.toString(),
                Toast.LENGTH_LONG).show();
    }
}

我不明白这个方法是怎么工作的。它正在读取一个被STORETEXT引用的文件吗?如果它制作一个文件,这个文件保存在哪里?最后,我如何访问"storetext。txt"文件以便使用

发送它
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File("/path/to/file"))); 

在电子邮件附件中?谢谢你帮助我学习,我一直在努力做一些研究,但我有困难理解这个概念。任何帮助都是感激的。

openFileInput()被使用,所以文件驻留在应用程序特定的内部文件目录中。使用getFilesDir()查找目录,然后添加文件名。但是…其他应用程序无法访问这个私有目录。所以你必须首先将文件复制到其他应用程序可以访问的地方。

这段代码正在读取文本文件"storetext.txt",然后在文本视图中显示该文件的内容。

InputStreamReader读取文件,BufferedReader和StringBuilder一起创建一个包含文件所有内容的长字符串。

如何访问该文件并发送Intent将取决于该文件的位置。它是否在应用程序环境之外,比如在SD卡上?还是在资源文件夹中,比如res/raw/storetext.txt?

根据不同的情况,您必须使用不同的方法来获取对文件的引用。你知道文件在哪吗?

另外,如果您希望使用intent

发送文件
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File("/path/to/file")));

和你试图发送的文件是在应用程序的私有目录,你必须使用ContentProvider,以便让其他应用程序(如本机电子邮件应用程序)访问你想要发送的文件。

这里有一个链接,非常有帮助,帮助我弄清楚。

http://stephendnicholas.com/archives/974

相关内容

  • 没有找到相关文章

最新更新