Tôi đang đọc tệp định kỳ được viết bởi chương trình của bên thứ ba. Im đọc bằng cách sử dụng FileStream dưới đây:Đọc một tệp mà không gây ra IOException trên chương trình của bên thứ ba
using (FileStream fs = new FileStream(
FullPath,
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))
Tuy nhiên các chương trình của bên thứ 3 được viết vào tập tin nhưng đang sử dụng FileShare.None
Vì vậy, thỉnh thoảng tôi đã có tập tin mở để đọc khi chương trình bên thứ 3 cố mở tệp bằng quyền truy cập độc quyền nhưng không thành công.
Làm cách nào để đọc tệp này mà không gây ra sự cố cho chương trình của bên thứ 3? Tôi sẽ không phiền khi đọc sách để ưu tiên cho một ứng dụng khác. Bất kỳ cách nào để làm điều này?
Bạn đã cố gắng sao chép nó vào một vị trí tạm thời và đọc từ đó? Thông thường những gì tôi làm là tạo ra một chức năng cố gắng đọc một tập tin nếu nó sử dụng nó trả về false nhưng nếu không trả về true thì tôi cố gắng sao chép và di chuyển tệp đến một vị trí tôi có thể làm việc với nó. Làm việc với một tập tin sản xuất có thể có khả năng nguy hiểm, đặc biệt là với 2 quy trình trong hỗn hợp. – Bearcat9425
File.Copy chỉ thực hiện một FileStream trong nền. Vấn đề không phải là khi tôi cố đọc và bị khóa. Khi tôi có quyền truy cập vào tệp và chương trình của bên thứ ba cố gắng giành quyền truy cập độc quyền nhưng không thể vì tôi đã mở nó. – CathalMF
Nếu bạn sao chép tệp vào vị trí tạm thời và để chương trình của bạn sử dụng tệp tạm thời đó sao cho tệp gốc không được sử dụng và do đó vẫn có thể được chương trình bên thứ ba truy cập mà không gặp sự cố. Nếu điều đó có ý nghĩa: D – aladd04