нужно найти месторасположение файла, по его названию

186
27 июля 2021, 21:20

есть имя файла Chrome, нужно только по его названию, найти где файл находится

Answer 1

Можно обойтись без явной рекурсии используя 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());
        }
    }
}
Answer 2

Можно использовать 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();
}
Answer 3

Как вариант можно поискать файл рекурсивно, записывая в лист результаты поиска. В этом случае нужно обязательно указывать расширение файла. Если же нужно искать по названию, то надо дописать метод который удаляет с конца файла символы до '.' включительно

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;
}
READ ALSO
Как изменять переменные из функции main в других функциях?

Как изменять переменные из функции main в других функциях?

Хочу, чтобы переменная one приняла значение two в теле не основной функцииВ с++ на это есть указатели

188
Фрагменты ViewPager в фрагментах BottomNavigationView

Фрагменты ViewPager в фрагментах BottomNavigationView

В общем, есть фрагмент HomeFragment, который выбирается с помощью BottomNavigationViewВ этом фрагменте есть еще два фрагмента TabLayout\ViewPager фильмы и сериалы

273
void is an invalid type for the variable deleteLine

void is an invalid type for the variable deleteLine

Написал программу которая удаляет определенную строку из файла,но что-то не пашет

282
как присвоить переменной значение из таблицы msyql

как присвоить переменной значение из таблицы msyql

у меня есть подключенная таблица из Mysql в проект java, мне нужно вывыести сумму значений в таблице, простым запросом в mysql я бы выполнил "select...

239