【发布时间】:2013-03-06 21:11:13
【问题描述】:
我正在尝试使用 Java 从我的 SD 卡中读取一个简单的文本文件,但我似乎无法打开它。我在 Ubuntu 12.04 上为移动开发人员使用 Eclipse。下面是 main Activity 的 onCreate() 方法中的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String status = "Hello, is it me you're looking for?";
String storageState = Environment.getExternalStorageState();
File dir = Environment.getExternalStorageDirectory();
File f = new File(dir, "textTest.txt");
if (f.exists()) {
status = "File is found!";
} else {
status = "File is not found!";
}
this.text1 = (TextView) findViewById(R.id.textView1);
text1.setText(status.subSequence(0, status.length()));
}
另外,这里是我为File f 尝试的一些构造函数,它们都不起作用:
File f = new File(dir, "textTest.txt");
File f = new File("/sdcard/textTest.txt");
File f = new File(dir, "mnt/sdcard/textTest.txt");
最后,我使用上面的storageState字符串检查了外部存储状态,Environment.getExternalStorageState()返回的值是mounted。我唯一的线索是我认为可能与 SD 卡是否可读有关,但这只是一个猜测。有什么想法吗?
添加:
如果您没有猜到,当我启动活动时,TextView 对象会显示“找不到文件!”。
添加 2:
好的,我刚刚尝试了一些有效的方法。当我通过 USB 连接手机时,打开了两个与手机相关的文件夹:一个包含内部存储中的所有文件夹(数据、DCIM ......等),另一个我假设的文件夹连接到 SD 卡,因为我通过笔记本电脑读卡器添加了文件,然后将其输入到手机中。但是,当我将文件“testText.txt”复制到第一个文件夹(我假设它与内部存储相关)时,构造函数 File f = new File("/sdcard/textTest.txt"); 起作用。怎么办?
【问题讨论】:
-
你的清单中有
write_external_storage权限吗? -
不,但我并不想写入文件。我正在努力阅读。根据此链接:developer.android.com/reference/android/os/…,read_external_storage 用于未来版本
-
如果您查看 logcat,如果您需要声明所需的任何权限,它可能会警告您。
-
读取文件时是否出现异常?调用
f.exists()或f.isFile()的结果是什么? -
各位,刚刚好用,但我不明白为什么,所以我将它添加到上面的问题中
标签: java android file-io android-sdcard