есть имя файла Chrome, нужно только по его названию, найти где файл находится
Можно обойтись без явной рекурсии используя FileUtils
:
public static void main(String[] args) {
final File root = new File("<root folder path>");
final String fileName = "<required file name>";
final Collection<File> files = FileUtils.listFiles(root, null, true); // true - recursive
for (final Iterator<File> iterator = files.iterator(); iterator.hasNext(); ) {
final File file = iterator.next();
if (file.getName().equals(fileName)) {
System.out.println(file.getAbsolutePath());
}
}
}
Можно использовать FileVisitor
:
private static Path find(String fileName, String sourceDirectory) throws IOException {
final AtomicReference<Path> result = new AtomicReference<>();
Files.walkFileTree(Paths.get(sourceDirectory), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(final Path file, final BasicFileAttributes attrs) throws IOException {
if (file.getFileName().toString().equalsIgnoreCase(fileName)) {
result.set(file);
return FileVisitResult.TERMINATE;
} else
return super.visitFile(file, attrs);
}
});
return result.get();
}
Как вариант можно поискать файл рекурсивно, записывая в лист результаты поиска. В этом случае нужно обязательно указывать расширение файла. Если же нужно искать по названию, то надо дописать метод который удаляет с конца файла символы до '.' включительно
private String filename;
private ArrayList<String> found = new ArrayList<>();
public ArrayList<String> findFile(String folderPath){
File folder = new File(folderPath);
List<String> list;
if(folder.list()!=null){
list = new ArrayList<>(Arrays.asList(folder.list()));
} else {
return found;
}
if(list.contains(filename)){
found.add(folderPath + "\\" + filename);
}
for (String fl : list) {
File path = new File(folderPath + "\\" + fl);
if(path.isDirectory()){
findFile(path.getAbsolutePath());
}
}
return found;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хочу, чтобы переменная one приняла значение two в теле не основной функцииВ с++ на это есть указатели
В общем, есть фрагмент HomeFragment, который выбирается с помощью BottomNavigationViewВ этом фрагменте есть еще два фрагмента TabLayout\ViewPager фильмы и сериалы
Написал программу которая удаляет определенную строку из файла,но что-то не пашет
у меня есть подключенная таблица из Mysql в проект java, мне нужно вывыести сумму значений в таблице, простым запросом в mysql я бы выполнил "select...