Czytanie z otwartego pliku

0

Witam
mam taki problem:

Mam napisany program w MatLabie, który zapisuje dane do pliku tekstowego. Zapisuje je funkcją fprintf, co ma znaczyć, że robi to tak, żeby dało się ciągle czytać z tego pliku, chociaż jest używany przez ten program.

Potrzebuję wiedzy jak napisać program w C#, który będzie ciągle czytał z tego pliku tekstowego. czy można otworzyć w jakiś sposób plik używany przez inny program?
używając polecenia:
StreamReader odczyt = new StreamReader("D:\Dane.txt");
wyskakuje powiadomienie, że plik jest używany przez inny proces i nie zezwala na dostęp do pliku.

1

Mam napisany program w MatLabie, który zapisuje dane do pliku tekstowego. Zapisuje je funkcją fprintf, co ma znaczyć, że robi to tak, żeby dało się ciągle czytać z tego pliku, chociaż jest używany przez ten program.

Jesteś pewien że dobrze zrozumiałeś? fprintf to standardowa funkcja w C (i C++) służąca do pisania tekstu (formatowanego, ale to nieważne) do pliku. Nic nie wiem o tym żeby w jakiś sposób nie blokowała pliku, szczególnie że funkcją otwierającą plik jest fopen.

Niestety, nie wiem jak w C++ otworzyć plik nie blokując go jednocześnie (pewnie gdzieś w sieci znajduje się rozwiązanie).
Za to wiem jak to zrobić w C#, ale to Ci pewnie nie pomoże (czytanie bez blokowania) -> np.

FileStream fs = new FileStream(@”c:\test.txt”, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader sr = new StreamReader(fs);
txtContents.Text = sr.ReadToEnd();
sr.Close();
0
MSM napisał(a)

Mam napisany program w MatLabie, który zapisuje dane do pliku tekstowego. Zapisuje je funkcją fprintf, co ma znaczyć, że robi to tak, żeby dało się ciągle czytać z tego pliku, chociaż jest używany przez ten program.

Jesteś pewien że dobrze zrozumiałeś? fprintf to standardowa funkcja w C (i C++) służąca do pisania tekstu (formatowanego, ale to nieważne) do pliku. Nic nie wiem o tym żeby w jakiś sposób nie blokowała pliku, szczególnie że funkcją otwierającą plik jest fopen.

Niestety, nie wiem jak w C++ otworzyć plik nie blokując go jednocześnie (pewnie gdzieś w sieci znajduje się rozwiązanie).
Za to wiem jak to zrobić w C#, ale to Ci pewnie nie pomoże (czytanie bez blokowania) -> np.

FileStream fs = new FileStream(@”c:\test.txt”, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader sr = new StreamReader(fs);
txtContents.Text = sr.ReadToEnd();
sr.Close();

O to mi chodziło
Dzięki wielkie. Właśnie w C# tego potrzebowałem, a nie w C++.

0

A jeszcze drugie pytanie z tym związane:
po przeczytaniu wszystkich linii w tym pliku chciałbym żeby program zaczął czytać ten plik od początku, ale nie w sposób "zamknij, otwórz".
jak przewinąć i czytać plik od początku.
pewnie znów jakaś prosta funkcja.

0

Ustaw fs.Position na 0.

0

Działa
po raz kolejny dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1