我一直在尝试做一些研究和学习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