2012-05-29 29 views
7

OK, tôi đang gặp một số sự cố khi viết nhiều dòng cho một tệp văn bản.Sự cố với tệp ghi đè máy đánh chữ thay vì phụ thêm vào cuối

chương trình chạy, nhưng nó sẽ không sử dụng dây chuyền mới mỗi lần

khi tôi muốn nó chạy 4 lần, các file văn bản sẽ giống như thế:

a 
b 
c 
d 

thay vào đó, nó trông giống như:

d 

ai biết cách khắc phục sự cố này? tất cả các lần nhập được nhập chính xác.

nguồn (nó được một chút thay đổi nội dung, giả sử tất cả những gì là đúng quy định):

import java.io.*; 
public class Compiler { 
public static void main (String args[]) throws IOException 
{ 
    //there's lots of code here 
    BufferedWriter outStream= new BufferedWriter(new FileWriter("output.txt")); 
    outStream.newLine(); 
    outStream.write(output); 
    outStream.close(); 
} 

} 
+1

Chỉ là một cảnh báo, nhưng điều này là nguy hiểm gần với câu hỏi "mã là gì". Tuy nhiên, vì bạn không đơn giản yêu cầu giúp đỡ (bạn đã cho thấy những gì bạn đã làm cho đến nay), tôi sẽ nhắm mắt làm ngơ. –

Trả lời

15

Hãy chắc chắn rằng khi bạn tạo một thể hiện của một FileWriter, mà bạn đang phụ thêm vào phần cuối của nó. Điều này có thể được thực hiện bằng cách sử dụng this specific FileWriter constructor cần thêm boolean làm tham số thứ hai. Điều này boolean yêu cầu FileWriter thêm vào cuối tệp, thay vì ghi đè lên tệp.

BufferedWriter outStream= new BufferedWriter(new FileWriter("encoded.txt", true)); 
+0

Tôi là một chút mới với các yếu tố đầu vào và đầu ra của java, vì vậy tôi có thể nhận được một ví dụ? Tôi không ở nơi lý tưởng để thử nghiệm ngay bây giờ (không có JDK hoặc IDE trên máy trạm này) – Azulflame

+1

Câu trả lời của tôi đã cung cấp những thay đổi bạn nên áp dụng để thực hiện công việc này. –

+0

Tôi đã viết rằng khi không có mã trong đó. Cảm ơn bạn đã trả lời. – Azulflame

2

Theo mặc định FileWriter sẽ ghi đè lên tệp. Những gì bạn có thể muốn làm là xác định người đọc theo cách thức sau đây:
new FileWriter("encoded.txt", true)
Bằng cách này, tập tin sẽ được nối vào thay vì ghi đè.

Hy vọng điều này sẽ hữu ích!

0

Tôi không chắc chắn mã này được cho là phải làm gì. Nó ném một lỗi nếu chuỗi đầu vào của bạn dài hơn một ký tự, bởi vì bạn đóng FileWriter của bạn bên trong vòng lặp, sau đó thử viết lại nó.

Tôi đang giải thích câu hỏi của bạn theo cách sau: bạn đang tự hỏi tại sao chỉ có đầu ra gần đây nhất trong tệp. Trong trường hợp đó, đó là vì bạn không tạo FileWriter của bạn trong chế độ phụ thêm. Xem xét các hàm tạo khác nhau có sẵn cho FileWriter và sử dụng một hàm cho phép bạn chắp thêm vào tệp.

Các vấn đề liên quan