[C#] Otwieranie plików używanych przez inny proces


(Marcin Obala) #1

Witam

Mam problem takiego typu. Program mi wyświetla, że plik który chcę otworzyć jej używany przez inny proces jednak mogę go otworzyć w notatniku. Ja potrzebuję tylko ten plik otworzyć, przeczytać w nim coś i zamknąć. Dziwi mnie to że można otworzyć ten plik w notatniku a w C# nie da się. Otwieram go przez:

FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read,FileShare.None;

lub

FileStream fs = FIle.Open(path);

I niestety wyświetla ciągle komunikat że plik jest używany. Jakieś pomysły?

edit:

Problem rozwiązany kopiowaniem pliku. Ale jak ktoś ma inny pomysł to może napisać.


(Drobok) #2

http://forum.4programmers.net/C_i_.NET/ ... tego_pliku


(somekind) #3

Notatnik nie jest zawłaszcza sobie pliku na własność, jeśli inny proces go nie blokuje, to bez problemu może go otworzyć, więc czemu się dziwisz? Zresztą, chyba większość programów użytkowych tak działa. Ty tworząc strumień ustawiasz FileShare.None, czyli chcesz go mieć na wyłączność dla siebie. Użyj takiego FileShare, który pozwoli Ci na dostęp do pliku używanego przez inny proces, np. FileShare.Read.

Tak w ogóle, to najprostszym rozwiązaniem jest zazwyczaj przeczytanie dokumentacji.


(Marcin Obala) #4

A widzisz, a ktoś "mądry" na jakiejś innej stronie napisał że właśnie FileShare.None trzeba dać a ja głupi uwierzyłem. Ale racja, do dokumentacji się opłaca zajrzeć.