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

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

Открыта

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

14
Задача
Java Collections,  1 уровень,  10 лекция
Недоступна
Читаем конфиги
Читаем конфиги
Комментарии (66)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
evggenn
Уровень 48
1 марта, 12:50
сепаратором не пользовался, просто через try catch (пробуя сначала loadXML, а потом load) и два раза инпутстрим открывал...
Максим Li Backend Developer
30 ноября 2025, 00:48
✅
Andrey PyDev
27 марта 2025, 08:01
сперва решил по шаблону (через поиск расширения) потом заметил, что в 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, 12:40
++
4 декабря 2024, 08:22
наконец-то задача решенная с первого раза и никакой валидатор не препятствовал этому)
Igoreek
Уровень 43
2 октября 2024, 13:58
Все четко и понятно, сразу видно применение и польза, а правильное решение удивило своим размахом, но решил куда проще используя fileName.endsWith(".xml")...
SomeBody098веник в бане
11 сентября 2024, 09:42
окей идем дальше
Serhii Diakonov
Уровень 43
Expert
5 апреля 2023, 08:02
я сделал без всего того что там в верном решении и пропустило. просто создал объект Properties. потом в блоке try создал FileInputStream и передал String, и дальше условие если endsWith(".xml") то loadFromXML иначе просто load ну и пустой блок catch все работает и все пропустило
milniy87
Уровень 41
15 марта 2023, 12:03
File.separator - это символ-разделитель для разных операционных систем, используемый в путях файловой системы. В ОС Windows, например, используется символ "\" (обратный слеш), а в Unix-подобных ОС - "/" (прямой слеш). Если вы используете символ-разделитель напрямую в своем коде, то при переносе вашего приложения на другую операционную систему может возникнуть проблема, поскольку символ-разделитель на этой системе может отличаться от того, который вы использовали. Использование File.separator обеспечивает кроссплатформенность вашего кода. Например, следующий код будет работать корректно на любой платформе:
String path = "folder" + File.separator + "file.txt";
Если вы используете только один символ-разделитель везде в своем коде, это может работать на вашей текущей ОС, но может привести к ошибкам при переносе приложения на другую ОС. Кроме того, использование File.separator может сделать ваш код более читабельным и понятным, так как вы сразу укажете, что используете символ-разделитель файловой системы. Таким образом, использование File.separator рекомендуется для обеспечения кроссплатформенности вашего кода.
hint1k
Уровень 51
10 мая 2023, 17:08
А зачем вообще тут сепаратор, если можно расширение сразу получить из пути:
Path path = Paths.get(fileName);
String name = path.getFileName().toString();
String[] names = name.split("\\.");
if (names.length == 2) {
     String ext = names[1];
}
DanielCEO в BicycleInventionAcad
28 февраля 2023, 00:40
Игра в угадай, чего хочет валидатор и совершенно безумное правильное решение (: