2010-03-05 42 views
6

Tôi có hai mô-đun khác nhau cần quyền truy cập vào một tệp duy nhất (Một sẽ có quyền Truy cập ReadWrite - Chỉ đọc khác). Các tập tin được mở ra bằng cách sử dụng đoạn mã sau vào một trong những module:FileStream: được sử dụng bởi một lỗi quy trình khác

FileStream fs1 = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.ReadWrite, FileShare.Read); 

vấn đề Th là các mô-đun thứ hai thất bại khi cố gắng mở cùng một tập tin bằng cách sử dụng đoạn mã sau:

FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read); 

Đỗ tôi cần thiết lập một số thông số bảo mật bổ sung ở đây?

Trả lời

22

Trên FileStream mà chỉ đọc các tập tin, bạn cần phải thiết lập nó như

FileShare.ReadWrite

FileStream fs = new FileStream(@"D:\post.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 

khác khôn ngoan FileStream gốc sẽ không thể để viết về nó ... nó chỉ là một cú volley qua lại đặt cược nhấn hai luồng, đảm bảo bạn trả lại những thứ còn lại cần

+0

+1: OK nó hoạt động nhưng tôi không biết tại sao. FileStream đầu tiên có thể lưu trong khi tệp thứ hai được mở không? – A9S6

+0

Với một bài kiểm tra nhanh, tôi đã có thể viết cho người đầu tiên sau đó đóng luồng tất cả trong khi người kia đã mở và có trạng thái CanRead trả về đúng .... vì vậy, theo cách đó, có – curtisk

0

bạn cần sử dụng filestreamname.Open(); và filestreamname.close(); lệnh khi sử dụng 2 dòng phim đọc/ghi vào cùng một tệp, vì bạn không thể đọc và ghi vào tệp không đồng bộ.

+2

-1: Thông tin hoàn toàn không chính xác. –

0

Khi mở thứ hai FileStream, bạn cũng cần phải xác định FileShare.Read, nếu không nó sẽ cố gắng để mở nó với truy cập độc quyền, và sẽ thất bại vì các tập tin đã được mở

+0

Đã cố gắng nhưng nó không hoạt động: FileStream fs = new FileStream (@ "D: \ post.xml", FileMode.Open, FileAccess.Read, FileShare.Read); – A9S6

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