Я пишу программу, предназначенную для проверки связи с онлайн-базой данных и записываю журнал статуса в .txt.
Всякий раз, когда я запускаю программу и открываю .txt, временная метка сообщает мне, что она только что была изменена, но она пуста.
public static void printToFile(String text) {
String fileName = "log.txt";
PrintWriter outputStream = null;
try {
outputStream = new PrintWriter(fileName);
System.out.println("Printing to txt");
outputStream.println("Debug");
} catch (FileNotFoundException e) {
System.out.println("Error opening the file " + fileName);
outputStream.close();
}
}
public static void pingDatabase(Connection conn) throws SQLException, InterruptedException {
Date timeStamp = new Date(System.currentTimeMillis());
do {
if (conn.isValid(10000)) {
System.out.println("Printtofile called");
printToFile("Database is Online");
} else {
printToFile("Database is Offline");
}
Thread.sleep(10000);
} while (true);
}




Поскольку это журнал, вам может потребоваться добавлять содержимое вместо записи каждый раз, и вам нужно будет сбрасывать содержимое в файл журнала после записи.
public static void printToFile(String text) {
String fileName = "log.txt";
PrintWriter outputStream=null;
try {
outputStream =new PrintWriter(new FileWriter(fileName,true));
System.out.println("Printing to txt");
outputStream.append(text+"\n");
outputStream.flush();//flushing to file
} catch (IOException e) {
e.printStackTrace();
System.out.println("Error opening the file " + fileName);
}
finally{
outputStream.close();
}
}
новый FileWriter (имя_файла, истина) FileWriter является подклассом OutPutStreamWriter и true для открытия в режиме добавления
@EJP только что закончил с одной частью, поэтому я буду работать над этим, а также буду искать это, и вы проголосовали против, вы также были бы оставлены комментарием
У вас нет информации о том, кто проголосовал против вашего ответа. Ваше редактирование предполагает, что исключение не было создано.
Я знаю, и это действительно кошмар, кто голосовал против без комментариев, в то время, когда просто ответил, как один минт раньше
@EJP FileNotFoundException недостаточно, поскольку PrintWriter требовал IOException для перехвата
Это точка мой. Не все исключения здесь связаны с невозможностью открыть файл. Я уже сказал это.
Спасибо, проблема исправлена, как я могу ограничить .text, чтобы он содержал только 10 последних входов в систему?
несколько способов обойти, за один прогон вы можете взять var и увеличить после каждой записи, и когда он достигнет десяти # делайте, что хотите
Вы не закрываете и не промываете PrintWriter, если нет исключения.
Вам также необходимо открыть выходной файл в режиме добавления, учитывая ваш текущий код, но было бы разумнее оставить его открытым. Накладные расходы на открытие и закрытие файла в сообщении огромны.
@Roushan Тот же ответ, что и что? Единственный ответ, который я вижу здесь, основан на предоставленной мной информации.
какая информация предоставлена вами? я не получаю таких
@Roushan Это то, что я сказал в своем ответе и в своем комментарии к вашему ответу, и, похоже, это то, на что yiu заявляет права собственности, которых у вас нет. Если у вас есть еще кое-что, сделайте это. Сейчас это просто шум.
@downvoter ОК, что это? Вам не нужно закрывать или промывать PrintWriter? Ему не нужно открывать свой файл в режиме добавления? Не имеет смысла держать его открытым? Накладные расходы на открытие и закрытие одного сообщения не огромны? Пожалуйста.
Пожалуйста, объясните, почему закрытие потока необходимо в блоке
catch, но не в любое другое время, и почемуIOExceptionможет возникнуть только из-за проблемы с открытием файла и ничего больше.