1

我正在尝试使用 Java 从我的 SD 卡中读取一个简单的文本文件,但我似乎无法打开它。我在 Ubuntu 12.04 上为移动开发人员使用 Eclipse。这是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");工作。怎么来的?

4

1 回答 1

0

根据评论..

将此添加到您的AndroidManifest.xml

android.permission.READ_EXTERNAL_STORAGE

此外,如果您使用 WRITE 操作执行某些操作,请添加此权限

android.permission.WRITE_EXTERNAL_STORAGE
于 2013-03-06T21:27:17.887 回答