试图列出从内部SD卡机器人的所有文件夹/文件,但得到一个空 [英] Trying to list all folders/files from internal sdcard android but get a null
问题描述
我试图让我的外部存储的所有文件的清单,但总是回来空。
如果(Environment.getExternalStorageDirectory()存在()){
Log.i(FILE,不为空); 文件[] =文件Environment.getExternalStorageDirectory()listFiles()。 对于(文件文件:文件){
Log.i(文件,file.getAbsolutePath());
}
}
我如何让它列出来自外部目录中的所有文件
我得到一个异常
产生的原因:显示java.lang.NullPointerException
在com.example.sam.read.fragments.MyFragment.onCreate(MyFragment.java:138)
在android.support.v4.app.Fragment.performCreate(Fragment.java:1763)
在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:913)
在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
在android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548)
在android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1164)
在android.app.Activity.performStart(Activity.java:5114)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2153)
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
在android.app.ActivityThread.access $ 600(ActivityThread.java:141)
在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234)
在android.os.Handler.dispatchMessage(Handler.java:99)
在android.os.Looper.loop(Looper.java:137)
在android.app.ActivityThread.main(ActivityThread.java:5041)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
在dalvik.system.NativeStart.main(本机方法)
的空指针
大概是从即将到来的(文件文件:文件)
,原因是文件
是空的
从文档, listFiles()
将返回null如果指定的路径是不是一个目录;它不会告诉你的是,如果你有一个文件系统权限问题,您将最有可能还可以得到这个值。
如果(Environment.getExternalStorageDirectory()存在())
你有没有在你的清单中定义所需的权限?
<使用许可权的android:NAME =android.permission.READ_EXTERNAL_STORAGE/>
如果这不是问题,那么我唯一想到的是,文件
是空的,或行 138 是不是在这个片段。
I am trying to make a list of all the files in my external storage but always comes back null.
if (Environment.getExternalStorageDirectory().exists()) {
Log.i(FILE, "is not empty");
File[] files = Environment.getExternalStorageDirectory().listFiles();
for (File file : files) {
Log.i("File ", file.getAbsolutePath());
}
}
How do I make it list all the files from the external directory
I get an exception
Caused by: java.lang.NullPointerException
at com.example.sam.read.fragments.MyFragment.onCreate(MyFragment.java:138)
at android.support.v4.app.Fragment.performCreate(Fragment.java:1763)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:913)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1164)
at android.app.Activity.performStart(Activity.java:5114)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2153)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
The NullPointer
is probably coming from for (File file : files)
, reason being that files
is null.
From the documentation, listFiles()
will return null if the specified path is not a directory; what it does not tell you is that you will most likely also get this value if you have a FileSystem permissions issue.
if ( Environment.getExternalStorageDirectory().exists() )
Do you have the required permissions defined in your manifest?
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
If this is not the issue, then my only thought is that FILE
is null, or line 138 is not in this snippet.
这篇关于试图列出从内部SD卡机器人的所有文件夹/文件,但得到一个空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!