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);