无法打开sd文件夹

时间:2017-08-23 20:21:49

标签: java android storage external

我想用一个按钮在我的外部卡片中列出我的文件夹(目前硬编码位置只是为了让球滚动)

public void onClickBtn(View v) {
    File f = new File("/storage");
    File[] files = f.listFiles();
    for (File inFile : files) {
        if (inFile.isDirectory()) {
            Log.i("is directory", "here: " + inFile);
        }
    }
}

这输出到我的logcat:

I/is directory: here: /storage/3164-6330
I/is directory: here: /storage/emulated
I/is directory: here: /storage/Private
I/is directory: here: /storage/enc_emulated
I/is directory: here: /storage/self

现在我想重复相同的过程,但改变我的路径“/ storage / 3164-6330”,因为我知道我的SD卡存储的地方

public void onClickBtn(View v) {
    File f = new File("/storage/3164-6330");
    File[] files = f.listFiles(); //will cause error here
    for (File inFile : files) {
        if (inFile.isDirectory()) {
            Log.i("is directory", "here: " + inFile);
        }
    }
}

但我在logcat中得到了这个:

Caused by: java.lang.NullPointerException: Attempt to get length of null array at com.example.abc.MainActivity.onClickBtn(MainActivity.java:141)

就是这一行:

for (File inFile : files) {

有谁知道我为什么要生成一个空数组?我的/ storage / 3164-6330路径中有文件和文件夹。谢谢!

2 个答案:

答案 0 :(得分:0)

listFiles() “如果目录为空,则数组将为空。如果此抽象路径名不表示目录,或者发生I / O错误,则返回null。” - link

似乎该文件夹不存在。我认为SD卡位置取决于您使用的API。我的是存储/标签卡

您可能只想调用:Environment.getExternalStorageDirectory()来获取SD卡位置。

编辑:我道歉,我没有看到关于了解那些存在的最后一行。尝试使用Environment.get调用,因为我有类似的问题,并在我的调用

中结束了

答案 1 :(得分:0)

尝试在文件夹名称的末尾添加File.separator(' /')

<jndiEntry jndiName="ibm.appcenter.services.endpoint" value="*://*:*/applicationcenterdev" />