Điều gì sẽ xảy ra khi bạn đồng thời mở hai (hoặc nhiều hơn) FileOutputStreams trên cùng một tệp?Tệp đồng thời viết bằng Java trên Windows
Các Java API nói điều này:
Một số nền tảng, đặc biệt, cho phép một tập tin được mở ra cho bằng văn bản chỉ có một FileOutputStream (hoặc đối tượng tập tin văn bản khác) tại một thời điểm.
Tôi đoán Windows không phải là nền tảng như vậy, vì tôi có hai luồng đọc một số tệp lớn (mỗi tệp khác nhau) rồi ghi vào cùng một tệp đầu ra. Không có ngoại lệ nào được ném ra, tệp được tạo và dường như chứa các khối từ cả hai tệp đầu vào.
câu hỏi Side:
- Đây có phải là đúng đối với Unix, quá?
- Và vì tôi muốn hành vi giống nhau (thực ra tôi muốn một chủ đề viết chính xác và cái kia được cảnh báo về xung đột), làm cách nào để xác định rằng tệp đã được mở để viết?
Nhưng tôi không muốn chặn bất cứ khi nào tôi viết, tôi muốn chặn, nếu ai đó đã viết thư cho tệp tôi muốn viết. Thực ra, tôi không muốn chặn chút nào. Tôi muốn nói với chủ đề thứ hai rằng anh ta không thể viết và để cho khách hàng quyết định về hành động tiếp theo. –
Kiểm tra khóa API. Bạn sẽ có thể kiểm tra khóa để xác định xem ai đó đã khóa nó (tức là không bock) và sau đó quyết định phải làm gì –