Edycja wybranej linii pliku

0

Cześć ;-)

Mam mały problem i niestety nie wiem jak go najprościej rozwiązać.
Otóż mam program składający się z trzech plików exe i jednego - najważniejszego, który je wszystkie uruchamia odpowiednio, ale nad samym programem to zbytnio się rozwodził nie będę. Chodzi mi o jakiś sposób, aby każda z tych trzech aplikacji miała możliwość edycji jednej linijki w pliku tekstowym wspólnym dla nich wszystkich (odpowiednio - aplikacja 1.: linijka 1., aplikacja 2.: linijka 2., aplikacja 3.: linijka 3). Przejrzałem wszystkie książki do c# jakie mam i przeszukałem internet, ale rozwiązania takiego problemu nie znalazłem - wszędzie tylko zapis linijka po linijce.

Czy ktoś może przypadkiem ma jakiś pomysł, albo chociaż jest w stanie podać nazwę jakiegoś ogólnego zagadnienia aby takie coś wykombinować?

1

np.

            string[] lines;
            using (StreamReader r = new StreamReader("path"))
                lines = r.ReadToEnd().Split(new string[] { Environment.NewLine },
                    StringSplitOptions.None);

            // operacje na linijkach

            using (StreamWriter w = new StreamWriter("path", false))
                foreach (string line in lines)
                    w.Write(line + Environment.NewLine);
0

całkiem działa :-)
dzięki [soczek]

tylko mam wątpliwości, czy przypadkiem nie zdarzy się tak, że gdy dwa programy w tym czasie będą chciały edytować ten plik (kwestia bardzo przypadkowego przypadku) to może się zdarzyć tak, że któryś się nie zapisze bo wczyta dane, dane się zmienią, a on zapisze te niezmienione?

0

tak. powinieneś synchronizować dostęp do tego pliku (przez IPC, np. System.Threading.Mutex czy Semaphore).

0

@msm nie prosciej File.ReadAllLines

Mutex, albo nawet zwykly otwarty stream,
Semaphore raczej nie, bo i tak pozwala na odczyt jednemu wątkowi, więc semaphore mija się z celem.

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