Java Android应用程序搜索特定文件的下载文件夹

Java Android应用程序搜索特定文件的下载文件夹,java,android,download-manager,Java,Android,Download Manager,我正在尝试创建一个应用程序,在我的下载文件夹中搜索特定文件的最新版本,然后返回该文件的路径。当我尝试查看带有文件名的文件数组或字符串数组时,我不断得到一个NullPointerException。调用downloadList.length时出现空点。我也尝试过while(下载[I]!=null){,但我仍然得到NullPointerException。我对应用程序编程相当陌生,并构建了一些应用程序,但没有一个应用程序访问公共文件。非常感谢您的帮助 public class MainActivit

我正在尝试创建一个应用程序,在我的下载文件夹中搜索特定文件的最新版本,然后返回该文件的路径。当我尝试查看带有文件名的文件数组或字符串数组时,我不断得到一个
NullPointerException
。调用
downloadList.length时出现空点。我也尝试过
while(下载[I]!=null){
,但我仍然得到
NullPointerException
。我对应用程序编程相当陌生,并构建了一些应用程序,但没有一个应用程序访问公共文件。非常感谢您的帮助

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String dlDir = Environment.DIRECTORY_DOWNLOADS;
        Log.d("Dir", dlDir);
        File downloadDir = new File(dlDir);
        Log.d("Dir", "Found the Directory");
        String[] downloadList = downloadDir.list();
        // File[] downloadList = downloadDir.listFiles();
        Log.d("Dir", "Created the list");
        int len = downloadList.length;
        while (int i = 0; i < len; i++) {
            DoStuff
        }
    }
}
公共类MainActivity扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
字符串dlDir=Environment.DIRECTORY\u下载;
Log.d(“Dir”,dlDir);
文件下载目录=新文件(dlDir);
Log.d(“Dir”,“找到目录”);
字符串[]downloadList=downloadDir.list();
//File[]downloadList=downloadDir.listFiles();
Log.d(“Dir”,“创建列表”);
int len=downloadList.length;
而(int i=0;i
因为File.length返回文件大小。
试试这个

String[] filelist = downloadDir.list();
filelist.length;

arraylistfilelist=newarraylist(Arrays.asList(downloadDir.list());
flieList.size();

ArrayList文件列表;
Collections.addAll(fileList,downloadDir.list());
fileList.size();
您可以帮助此页面。

您不能使用

File downloadDir = new File(Environment.DIRECTORY_DOWNLOADS);
直接,这是错误。 因为Environment.DIRECTORY\u DOWNLOADS是字典的名称,而不是路径

getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);

相反,在您的活动中。

listFiles()
实际上返回
File[]
您不能将它们存储在字符串的数组列表中。哦,对不起。我更改了我的答案。您在测试什么?目录可能不存在。请尝试检查
downloadDir.exists()的返回值
以确保它存在。如果它不存在(授予您写权限),您可以随时通过调用
downloadDir.mkDir()
自己创建它感谢您对
环境的澄清。DIRECTORY\u DOWNLOADS
澄清:我想访问我的内部存储上的DOWNLOADS文件夹,而不是SD卡。getExternalFilesDir是否适用于内部存储?@android您的下载目录在哪里?您可以使用getDir(dirname,Context.MODE\u PRIVATE)要在应用程序的内部存储中获取目录,其路径为/data/data/your package/app\u dirname。是否需要此目录?更新:我使用了
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u DOWNLOADS)
,但我忘记了清单文件中的
File downloadDir = new File(Environment.DIRECTORY_DOWNLOADS);
getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);