У меня есть каталог с несколькими файлами. Мне нужно получить только имена файлов XML в списке с использованием Java. Как я могу это сделать?Извлечь все имена файлов XML из каталога с помощью JAVA
ответ
Попробуйте [FilePath это путь к каталогу !!]
public static void main(String[] args) {
File folder = new File("{FilePath}");
File[] listOfFiles = folder.listFiles();
for(int i = 0; i < listOfFiles.length; i++){
String filename = listOfFiles[i].getName();
if(filename.endsWith(".xml")||filename.endsWith(".XML"))
{
System.out.println(filename);
}
}
}
}
Спасибо. Рабочий тон – user3089869
1) 'filename.endsWith (". Xml ")' пропустит любой файл, заканчивающийся .XML. 2) Используйте 'FilenameFilter'! –
@AndrewThompson: jus добавить инструкцию OR, если инструкция работает нормально .. !! – BlackPOP
Вы можете использовать также FilenameFilter:
import java.io.File;
import java.io.FilenameFilter;
public class FileDemo implements FilenameFilter {
String str;
// constructor takes string argument
public FileDemo(String ext) {
str = "." + ext;
}
// main method
public static void main(String[] args) {
File f = null;
String[] paths;
try {
// create new file
f = new File("c:/test");
// create new filter
FilenameFilter filter = new FileDemo("xml");
// array of files and directory
paths = f.list(filter);
// for each name in the path array
for (String path : paths) {
// prints filename and directory name
System.out.println(path);
}
} catch (Exception e) {
// if any error occurs
e.printStackTrace();
}
}
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(str.toLowerCase());
}
}
Я бы изменил 'name.endsWith (str)' на 'name.toLowerCase(). EndsWith (str.toLowerCase())', чтобы учесть ... различный случай между тем, что указано, и тем, что найдено. В противном случае +1 не только для правильного API, но и для примера. Ницца. :) –
Вы можете фильтровать с помощью File.filter (FilenameFilter). Предоставьте свою реализацию для FileNameFilter
File f = new File("C:\\");
if (f.isDirectory()){
FilenameFilter filter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".xml")){
return true;
}
return false;
}
};
if (f.list(filter).length > 0){
/* Do Something */
}
}
Не могли бы вы показать, что вы пробовали. Некоторый код, пожалуйста. –
Смотрите следующее: http://stackoverflow.com/questions/5751335/using-file-listfiles-with-filenameextensionfilter – Nishan