Я немного играю в Java, просто для удовольствия. После просмотра некоторых сообщений о моей проблеме я не могу видеть свою ошибку. Я закрываю FileWriter, так что поток называется он неявно, но содержание его не записывается в файл ...FileWriter не пишет
private void overrideDefaultPropertiesFile(String logFile) {
try {
ClassLoader classLoader = this.getClass().getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("log4j.properties");
String fileText = "";
String search = "log4j.appender.archivo.file";
String adaptSlashes = logFile.replace("\\", "/");
String replacement = "log4j.appender.archivo.file=" + adaptSlashes;
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
String line;
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
while ((line = bufferedReader.readLine()) != null) {
if (!line.startsWith(search)) {
fileText += line + "\r\n";
}
}
bufferedReader.close();
fileText += replacement + "\r\n";
URI uri = getClass().getResource("/log4j.properties").toURI();
File log4jProperties = new File(uri);
FileWriter fileWriter = new FileWriter(log4jProperties, false);
fileWriter.write(fileText);
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
Что я забыл или что я делаю не так?
С уважением.
-------- Обновлено --------
Я на Eclipse, и приложение это на Maven. Отладка путей указывает:
Затмение (файл я пытаюсь изменить) ->C:\Users\iagoaa\Documents\serpa\src\main\resources\log4j.properties
URI ->file:/C:/Users/iagoaa/Documents/serpa/target/classes/log4j.properties
(До сих пор я не понимал, что это не то же самое путь, пока я не отлаживал снова, чтобы писать здесь ссылки. Хотя, я проверил файл в URI и не записал изменений)
Я использую последний метод из этого блога (Link info), потому что, когда проект на JAR, вы не можете сделать new File("src/main/resources/log4j.properties")
.
-------- Обновлено 2 --------
код работает, у меня был беспорядок с пути, когда я увидел этот файл в браузере пакетов Eclipse. Кроме того, в выходном файле было написано, но вместо ввода, чтобы увидеть, были ли изменения, я нажал F5, чтобы обновить папку и посмотреть, была ли изменена дата изменения, но я не знаю, почему она не изменилась, и я подумал, что это wasn ' я пишу, но я вынужден бросить исключение, и это написано.
Пробовал использовать отладчик; или иметь выход, ur содержание, которое имеет значение, напечатанное на stdout, чтобы проверить, что у него есть ожидаемый контент? – GhostCat
Просто отлаживайте или регистрируйте 'uri' как-то. 'log4jProperties', скорее всего, укажет на другой файл, поскольку IDE или maven (не знаю, что вы используете) обычно создают проект в некотором временном каталоге и запускают его там. – Evgeny
Спасибо за ваши ответы, я обновил свой вопрос более подробно. – Aker666