cuốn sách gpt4 ai đã làm

Tạo một tệp văn bản nếu nó không tồn tại và nối vào nó bằng Java BufferedWriter nếu nó tồn tại

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 04:11:39 34 4
mua khóa gpt4 Nike

Điều này có thể cực kỳ đơn giản đối với một lập trình viên Java, nhưng thực tế là tôi (một người mới làm quen với Java) không thể tìm thấy một ví dụ đơn giản, dễ hiểu về cách thực hiện điều đó, nghĩa là tôi sẽ sử dụng tự trả lời Tùy chọn hy vọng sẽ ngăn chặn những người khác trải qua những thất vọng tương tự.

Tôi cần xuất thông báo lỗi ra một tệp văn bản đơn giản. Các thao tác này rất hiếm và nhỏ (và đôi khi không cần thiết chút nào), do đó không cần phải giữ luồng mở cho tệp; tệp được mở, ghi và đóng trong một thao tác duy nhất.

Không giống như các vấn đề "chắp thêm" khác mà tôi gặp phải, vấn đề này yêu cầu tệp phải được tạo vào lần đầu tiên phương thức được gọi trong thời gian chạy của ứng dụng Java. Tệp sẽ không tồn tại trước khi điều này xảy ra.

Mã ban đầu là:

            Đường dẫn pathOfLog = Paths.get(gsOutputPathUsed + gsOutputFileName);
Bộ ký tự charSetOfLog = Charset.forName("US-ASCII");
bwOfLog = Files.newBufferedWriter(pathOfLog, charSetOfLog);
bwOfLog.append(stringToWrite, 0, stringToWrite.length());
iReturn = stringToWrite.length();
bwOfLog.newLine();
bwOfLog.close();

Biến bắt đầu bằng gs là biến chuỗi được điền sẵn hiển thị vị trí đầu ra và stringToWrite là tham số được truyền vào.

Vì vậy, phương thức .append là đủ để cho biết rằng tôi muốn nối thêm nội dung, phải không?

Nhưng thực tế không phải vậy; mỗi lần thủ tục được gọi, tệp chỉ chứa chuỗi từ lệnh gọi gần đây nhất.

câu trả lời hay nhất

Câu trả lời là bạn cũng cần chỉ định tùy chọn kích hoạt khi gọi phương thức newBufferedWriter. Những gì bạn nhận được là các tham số mặc định được chỉ định trong tài liệu:

Nếu không có tùy chọn nào thì phương thức này hoạt động như thể có các tùy chọn CREATE, TRUNCATE_EXISTING và WRITE.

Cụ thể, chính TRUNCATE_EXISTING đã gây ra sự cố:

Nếu tệp đã tồn tại và nó được mở để truy cập VIẾT thì độ dài của nó sẽ bị cắt bớt về 0.

Khi đó giải pháp là thay đổi

bwOfLog = Files.newBufferedWriter(pathOfLog, charSetOfLog);

đến

bwOfLog = Files.newBufferedWriter(pathOfLog, charSetOfLog,StandardOpenOption.CREATE, StandardOpenOption.APPEND);

Điều này có thể rõ ràng đối với những người lập trình Java lâu năm, nhưng với người mới thì không. Hy vọng điều này sẽ giúp ai đó tránh được một số cú đập đầu.

Về java - Tạo một tệp văn bản nếu nó không tồn tại và nối vào nó bằng Java BufferedWriter nếu nó tồn tại, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/32029770/

34 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress