Phương pháp sau đây chỉ ghi ra mục mới nhất mà tôi đã thêm vào, nó không thêm vào các mục trước đó. Tôi đang làm gì sai?Phương thức chắp thêm PrintWriter không phụ thêm
public void addNew() {
try {
PrintWriter pw = new PrintWriter(new File("persons.txt"));
int id = Integer.parseInt(jTextField.getText());
String name = jTextField1.getText();
String surname = jTextField2.getText();
Person p = new Person(id,name,surname);
pw.append(p.toString());
pw.append("sdf");
pw.close();
} catch (FileNotFoundException e) {...}
}
này cũng giống như đánh thức thread ngủ, vì vậy xin lỗi vì điều đó. Nhưng tôi có một nghi ngờ. làm thế nào tôi sẽ làm phụ thêm hoạt động trong tập tin nếu tôi chỉ cho đối tượng File, và tôi không được phép sử dụng các lớp Stream (ví dụ FileOutputStream và vv). Những gì tôi được phép là: Printwriter pw = new PrintWriter (file); : Tôi đã thử nối thêm(), write(), print(). là có bất kỳ phương pháp readymade cho phụ thêm trong kịch bản này. –
Để làm rõ, phương thức 'append()' của PrintWriter đề cập đến thực tế là nó phụ thêm vào Writer bằng chính i.e là dòng đầu ra của chính nó chứ không phải cho tệp. –
Và với tham chiếu đến câu hỏi của @ user1707035, không, có vẻ như bạn không thể sử dụng PrintWriter để chắp thêm mà không cần xây dựng nó với đối tượng OutputStream. Điều này là do PrintWriter mở luồng tại thời điểm đó là instantiation và các constructor duy nhất hỗ trợ File hoặc filename như một đối số mở File bằng cách xây dựng một đối tượng OutputStream bên trong mà không có tham số 'append'. Tham chiếu (tài liệu): https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#PrintWriter(java.io.File) –