Strona główna SoftDev Równoczesny dostęp do pliku

Równoczesny dostęp do pliku

0

Przygotowywałem ostatnio dla klienta soft, którego zadaniem było pobieranie i wyświetlanie (z opcjami filtrowania) plików CSV generowanych przez aplikacje pilnujące produkcji.

Zadanie dość banalne, nie mniej jednak pojawił się drobny problem – nowy plik CSV tworzony jest jedynie po zmianie asortymentu na maszynie co nie zdarza się mimo wszystko tak bardzo często, a użytkownik chce mieć dostęp do wszystkich zarejestrowanych danych. Istnieje w związku z tym spore niebezpieczeństwo, że pojawi się klasyczny problem potrzeby jednoczesnego dostępu do pliku zarówno przez soft zapisujący jak i odczytujący.

Z pomocą przychodzi tutaj wykorzystanie klasy FileStream – koniecznie zarówno w aplikacji odczytującej jak i zapisującej. Możemy tutaj zdefiniować parametry blokowania otwartego przez nas pliku dla innych aplikacji próbujących tego samego.

Przykład jest w VB.net. Co prawda na codzień używam bardziej C# ale w tym projekcie są akurat takie wymagania klienta.

Dim iStream = New FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)

Strumień z przykładu sparametryzowany jest do odczytu ale zezwalając na odczyt i zapis innym. Taki strumień możemy potem np. użyć jako parametr dla StreamReader-a

Dim sr As StreamReader = New StreamReader(iStream, System.Text.Encoding.UTF8)

 

Szczegóły dostępnych opcji inicjalizacji obiektu klasy FileStream są oczywiście na MSDN
http://msdn.microsoft.com/pl-pl/library/system.io.filestream(v=vs.110).aspx

ZOSTAW ODPOWIEDŹ

Proszę wpisać swój komentarz!
Proszę podać swoje imię tutaj