Записать свойства в URL

Я пытаюсь передать свойства из java.util.Properties в онлайн-файл, используя его URL-адрес.

Это код, который у меня есть на данный момент:

public static boolean savePropertiesToURL(Properties properties, String link, String fileName) {
    boolean result = false;
    if (properties != null && link != null && fileName != null) {
        try {
            URL url = new URL(link);
            try {
                URLConnection connection = url.openConnection();
                connection.setDoOutput(true);
                try {
                    OutputStream outStream = connection.getOutputStream();
                    try {
                        properties.store(outStream, fileName);
                    } catch (IOException ex) {
                        System.err.println("Unable to store the properties: " + ex.getMessage());
                    } finally {
                        try {
                            outStream.flush();
                            result = true;
                        } catch (IOException ex) {
                            Logger.getLogger(PropertiesUtil.class.getName()).log(Level.SEVERE, null, ex);
                            System.err.println("Unable to flush outputstream: " + ex.getMessage());
                        }
                        outStream.close();
                    }
                } catch (IOException ex) {
                    System.err.println("Unable to get outputstream: " + ex.getMessage());
                }
            } catch (IOException ex) {
                System.err.println("Unable to open URL connexion: " + ex.getMessage());
            }
        } catch (MalformedURLException ex) {
            System.err.println("The URL hasn't been created: " + ex.getMessage());
        }
    }
    return result;
}

Он проходит через все это и возвращает истину. Даже несмотря на то, что файл не записывается. В каждом улове есть регистраторы, но ни один улов никогда не срабатывает.

Этот код был бы намного понятнее, если бы вы использовали return false вместо result = false и, таким образом, избегали всех этих вложенных операторов if.

khelwood 06.12.2018 11:10

Чувак, я надеюсь, что ты не используешь такую ​​обработку ошибок в повседневной жизни, что кажется такой головной болью! Если вы просто собираетесь прервать поток выполнения, когда поймаете ошибку, почему бы не позволить ему бросить и естественным образом не прервать поток выполнения? Или, если ваш метод не должен бросать, просто сделайте одну большую ловлю всех

Aaron 06.12.2018 11:12

@khelwood Конечно, я могу это изменить. Но не думаю, что конечный результат изменится. я попытаюсь

Arnaud 06.12.2018 11:13

Также вы используете переменную url, переменную URL и класс URL - все в одном методе. Более творческие имена переменных помогут избежать путаницы.

khelwood 06.12.2018 11:14

В любом случае проблема в том, что Properties созданы для записи в файл (они просто записывают key=value\n в свой OutputStream), но конечные точки URL обычно не предназначены для обработки таких данных; должен быть сервер, отвечающий на URL-адрес, и ему не должно нравиться то, что вы ему отправляете.

Aaron 06.12.2018 11:29

@Aaron Как вы хотите обработать ошибку и отладить, если вы просто попробуете и поймаете? Это единственный способ, которым я понял

Arnaud 06.12.2018 11:34

Зависит от того, какую обработку вы хотите выполнить. В предыдущей версии вашего кода все, что вы делали, - это останавливали выполнение, используя блоки if, но выполнение все равно было бы остановлено, если вы не обнаружили ошибок. Если вы хотите сделать что-то конкретное, поймайте, сделайте это и либо верните, либо повторите, чтобы избежать запуска остальной части кода. Если вы не хотите делать что-то конкретное, либо не поймите, если вы можете изменить подпись метода, либо используйте один улов, который просто вернет значение ошибки, если вы не можете.

Aaron 06.12.2018 11:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
79
0

Другие вопросы по теме