Я умеренно опытный парень C++, медленно изучающий Java. Я пишу программу, которая должна сделать следующее:Неоднократно записывать в файл
- Создать простой текстовый файл, директория по умолчанию является штрафом
- Как работает программа, периодически написать одну строку данных в файл. В зависимости от ряда факторов программа может писать в файл один или несколько раз. Нет способа узнать, какая запись будет последней.
Я изучал различные способы сделать это, и это рабочий код, который я придумал. Есть два файла, «PeteProgram.java» и «PeteFileMgr.java»:
/*
"PeteProgram.java"
*/
import java.io.*;
import java.lang.String;
public class PeteProgram {
public static void main(String[] args) throws IOException {
String PeteFilename="MyRecordsFile.txt";
Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(PeteFilename), "utf-8"));
PeteFileMgr MyPeteFileMgr = new PeteFileMgr(writer);
MyPeteFileMgr.AddThisString(writer, "Add this line #1\n");
MyPeteFileMgr.AddThisString(writer, "Add this line #2\n");
MyPeteFileMgr.AddThisString(writer, "Add this line #3\n");
}
}
//=====================================================================================================
//=====================================================================================================
/*
"PeteFileMgr.java"
*/
import java.io.*;
public class PeteFileMgr {
public PeteFileMgr(Writer writer) {
try {
writer.write("File created!");
} catch (IOException ex) {
// report
} finally {
try {writer.close();} catch (Exception ex) {}
}
}
void AddThisString(Writer writer, String AddThis) {
try {
writer.append(AddThis);
} catch (IOException ex) {
// report
} finally {
try {writer.close();} catch (Exception ex) {}
}
}
}
Первоначальное создание файла работает просто отлично. Тем не менее, добавляемые строки не записываются в файл. Поскольку программа компилируется и запускается без ошибок, я предполагаю, что программа пытается писать добавленные строки, терпит неудачу и выдает исключение. (К сожалению, я работаю с примитивным компилятором/отладчиком и не вижу, если это так.)
Кто-нибудь видит мою ошибку?
Many thanks!
-P
Вызов 'writer.close()' должен все еще находятся в блоке 'finally' в' main'. –
Отлично! Это сработало блестяще ...! Большое спасибо :) – Pete