2013-03-06 80 views
1

我想读从我的SD卡使用Java简单的文本文件,我似乎不能从阅读中能打开它。我在Ubuntu 12.04上使用Eclipse for Mobile Developers。下面是在onCreate()方法主要活动的代码:从SD卡

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");工作的构造。怎么来的?

+2

做u有清单中的'write_external_storage'权限? – 2013-03-06 21:23:05

+0

不,但我不想写入文件。我正在阅读。而根据此链接:http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory%28%29,read_external_storage是未来的版本 – naxchange 2013-03-06 21:25:36

+0

如果你看logcat中,可能会向您发出警告如果你需要声明任何需要的权限。 – 2013-03-06 21:26:46

回答

0

基于评论..

添加到您的AndroidManifest.xml

android.permission.READ_EXTERNAL_STORAGE 

此外,如果你不与写操作出头添加此权限

android.permission.WRITE_EXTERNAL_STORAGE 
+1

的'android.permission.READ_EXTERNAL_STORAGE'目前不强制执行时刻,最近又加入了** API ** ** 16 **。任何声明“android.permission.WRITE_EXTERNAL_STORAGE”权限的应用程序都被隐式授予READ权限。 – kaderud 2013-03-06 22:57:41