我有一个包含两个文件的文件夹:一个pdf和一个xml。
当我点击文件夹时,我只想获取xml文件的路径。
使用我的代码(我在下面发布),我得到两个文件的路径。
谁能帮帮我? 谢谢!
private ArrayList<String> GetFiles2(File f) {
ArrayList<String> MyFiles = new ArrayList<String>();
//File f = new File(DirectoryPath);
f.mkdirs();
File[] files = f.listFiles();
if (files.length == 0)
return null;
else {
for (int i=0; i<files.length; i++)
MyFiles.add(files[i].getPath());
}
System.out.println("MYFILE:"+MyFiles);
return MyFiles;
}
我的结果:MYFILE:
`[/storage/emulated/0/ordinazioni/2/23_Agosto_2017_09_44_51_AM.xml,` /storage/emulated/0/ordinazioni/2/23_Agosto_2017_09_44_51_AM.pdf]
答案 0 :(得分:1)
您可以使用覆盖版本的File#listFiles(FileFilter)
从目录中获取特定文件。
File[] files = f.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".xml");
}
});
完全实施:
private ArrayList<String> getXmlFiles(File directory) {
ArrayList<String> names = new ArrayList<>();
directory.mkdirs();
File[] files = directory.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".xml");
}
});
for(File f : files)
names.add(f.getPath());
System.out.println("MYFILE:" + names);
return files.length > 0 ? names : null;
}
无论如何,我建议您返回null
的空列表,以避免NPE问题(仅return names
)
答案 1 :(得分:0)
您可以更改for
- 循环,例如:
for (int i=0; i<files.length; i++) {
if(files[i].getPath().endsWith(".xml")) {
MyFiles.add(files[i].getPath());
}
}
这将仅在MyFiles列表中添加praticular文件夹中的xml文件的路径
答案 2 :(得分:0)
要获取特定文件位置,请使用此代码
File dir = Environment.getExternalStorageDirectory();
File yourFile = new File(dir, "path/to/the/file/inside/the/sdcard.ext");
例如;
"/AAlist/"+serialno.get(position).trim()+".jpg"