JavaRush /Курсы /Java Collections /Задачи | 1 уровень | 10 лекция

Задачи | 1 уровень | 10 лекция

Java Collections
1 уровень , 10 лекция
Открыта

— Привет, Амиго! Вот, держи интересную задачу, решать ее можно только в Intellij IDEA.

14
Задача
Java Collections, 1 уровень, 10 лекция
Недоступна
Читаем конфиги
Читаем конфиги
Комментарии (67)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
evggenn Уровень 46
1 марта 2026
сепаратором не пользовался, просто через try catch (пробуя сначала loadXML, а потом load) и два раза инпутстрим открывал...
Максим Li Уровень 51
30 ноября 2025
Andrey Уровень 34
27 марта 2025
сперва решил по шаблону (через поиск расширения) потом заметил, что в Files есть Files.probeContentType(Paths.get(fileName)) определяет тип файла взввисимости от содекржимого и соот-но можно и так

public Properties getProperties(String fileName) {
        Properties properties = new Properties();
        try(FileInputStream fis = new FileInputStream(fileName)) {
            String filetype = Files.probeContentType(Paths.get(fileName));
            if (filetype.equals("text/xml")) {
                properties.loadFromXML(fis);
            } else {
                properties.load(fis);
            }
        } catch (IOException e) {
            return properties;
        }
        return properties;
    }
{Java_Shark} Уровень 36
15 января 2025
++
4 декабря 2024
наконец-то задача решенная с первого раза и никакой валидатор не препятствовал этому)
Igoreek Уровень 43
2 октября 2024
Все четко и понятно, сразу видно применение и польза, а правильное решение удивило своим размахом, но решил куда проще используя fileName.endsWith(".xml")...
SomeBody098 Уровень 51
11 сентября 2024
окей идем дальше
Serhii Diakonov Уровень 43 Expert
5 апреля 2023
я сделал без всего того что там в верном решении и пропустило. просто создал объект Properties. потом в блоке try создал FileInputStream и передал String, и дальше условие если endsWith(".xml") то loadFromXML иначе просто load ну и пустой блок catch все работает и все пропустило
milniy87 Уровень 41
15 марта 2023
File.separator - это символ-разделитель для разных операционных систем, используемый в путях файловой системы. В ОС Windows, например, используется символ "\" (обратный слеш), а в Unix-подобных ОС - "/" (прямой слеш). Если вы используете символ-разделитель напрямую в своем коде, то при переносе вашего приложения на другую операционную систему может возникнуть проблема, поскольку символ-разделитель на этой системе может отличаться от того, который вы использовали. Использование File.separator обеспечивает кроссплатформенность вашего кода. Например, следующий код будет работать корректно на любой платформе:

String path = "folder" + File.separator + "file.txt";
Если вы используете только один символ-разделитель везде в своем коде, это может работать на вашей текущей ОС, но может привести к ошибкам при переносе приложения на другую ОС. Кроме того, использование File.separator может сделать ваш код более читабельным и понятным, так как вы сразу укажете, что используете символ-разделитель файловой системы. Таким образом, использование File.separator рекомендуется для обеспечения кроссплатформенности вашего кода.
hint1k Уровень 51
10 мая 2023
А зачем вообще тут сепаратор, если можно расширение сразу получить из пути:

Path path = Paths.get(fileName);
String name = path.getFileName().toString();
String[] names = name.split("\\.");
if (names.length == 2) {
     String ext = names[1];
}
Daniel Уровень 51
28 февраля 2023
Игра в угадай, чего хочет валидатор и совершенно безумное правильное решение (: