【问题标题】:Reading from SD card从 SD 卡读取
【发布时间】: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


【解决方案1】:

基于 cmets..

将此添加到您的 AndroidManifest.xml

android.permission.READ_EXTERNAL_STORAGE

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

android.permission.WRITE_EXTERNAL_STORAGE

【讨论】:

  • android.permission.READ_EXTERNAL_STORAGE 目前没有强制执行,它最近被添加到 API 16 中。任何声明 android.permission.WRITE_EXTERNAL_STORAGEpermission 的应用都被隐式授予 READ 权限。
猜你喜欢
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-05
  • 1970-01-01
  • 2013-09-08
  • 2023-03-16
相关资源
最近更新 更多