StreamReader - problem z close.

0

Witam. Mam problem z StreamReaderem.
Otóż:
Chcę zamknąć streamreadera, ponieważ potem chcę użyć ten sam plik, ale żeby coś do niego zapisać.
Wyskakuje mi w tym czasie błąd, że inny proces używa tego pliku.

Kod:

StreamReader reader = new StreamReader(@"C:\Cos.txt");

A potem:
<quote>
reader.Close();
<quote>

Następnie na innej formie (może to mieć jakieś znaczenie) wpisuję:
<quote>
StreamWriter writer = new StreamWriter(@"C:\Cos.txt", true);
<quote>

W tym właśnie momencie wywala mi, że proces jest używany.
Może coś wpisać w tych nawiasach w reader.Close?

Z góry dziękuję za odpowiedź.
Bloody Rat

0
Bloody Rat napisał(a)

Witam. Mam problem z StreamReaderem.
Otóż:
Chcę zamknąć streamreadera, ponieważ potem chcę użyć ten sam plik, ale żeby coś do niego zapisać.
Wyskakuje mi w tym czasie błąd, że inny proces używa tego pliku.

Kod:

StreamReader reader = new StreamReader(@"C:\Cos.txt");

A potem:

reader.Close();

Następnie na innej formie (może to mieć jakieś znaczenie) wpisuję:

StreamWriter writer = new StreamWriter(@"C:\Cos.txt", true);

W tym właśnie momencie wywala mi, że proces jest używany.
Może coś wpisać w tych nawiasach w reader.Close?

Z góry dziękuję za odpowiedź.
Bloody Rat

Sory, wstawiam jeszcze raz, bo w tamtym zapomniałem dać "/"
Bloody Rat

0

A spróbuj FileStream najpierw utworzyć i dać go do konstruktora (w obydwu przypadkach), reszta tak samo.

0

Szczerze powiem, że wolałbym zostać przy StreamReader i StreamWriter (mają więcej funkcji).

0
Bloody Rat napisał(a)

Szczerze powiem, że wolałbym zostać przy StreamReader i StreamWriter (mają więcej funkcji).

Chodziło chyba raczej o coś takiego:

FileStream fs = new FileStream("file.txt", FileMode.Open);
StreamReader reader = new StreamReader(fs);

I analogicznie podobnie dla zapisywania.

0
Bloody Rat napisał(a)

Następnie na innej formie (może to mieć jakieś znaczenie)

Jesteś pewien, że zamykasz na pierwszej formie plik, zanim próbujesz go otworzyć raz jeszcze na drugiej formie?

0

Tak, wpisuję reader.Close() i nawet reader.Dispose(), ale niestety nie pomaga.
Na pierwszej formie, jak będę coś próbował robić z readerem po wpisaniu reader.Close() napisze mi, że nie można wykonywać operacji na zamkniętym readerze. Tylko nie wiem, coś nie do końca się zamyka, i nie mogę zrobić coś z plikiem tekstowym na innej formie.

0

Pokaż dokładnie cały kod (część z obsługą plików).

0

Dałem już kod...

StreamReader reader = new StreamReader(@"C:\Cos.txt");
reader.Close();

Potem:

StreamWriter writer = new StreamWriter(@"C:\Cos.txt", true);

0

A próbowałeś jak ci mówiłem z FileStream czy dzieje się tak samo?

0

Mówię Ci przecież, że nie chcę tego FileStream, gdyż nie ma tylu funkcji co StreamReader.
Wydaje mi się, że problem i tak byłby taki sam.

0

A jezeli wpisuję

FileStream fs = new FileStream("text.txt", FileMode.Open);
StreamReader reader = new StreamReader(fs);

To wywala mi, że proces jest używany w tej linijce

FileStream fs = new FileStream("text.txt", FileMode.Open);

Nie wiem czemu akurat tak.

0

Proponuje użyć

using(StreamReader reader = new StreamReader(@"C:\Cos.txt"))
{
// twoj kod robiacy cos z plikiem
}

i nie bedizesz musiał martwic sie o zamknięcie pliku

0

Ale to chyba to samo, tylko skraca zapis.

A może nie pokazałeś nam całego kodu który obsługuje ten plik (z obydwu okienek)? Wg tego co na razie wiemy, to wszystko powinno być ok, a w czym jest problem to można by sobie zgadywać...

0

Nie wiem, spróbuj zamknąć tylko StreamReader.BaseStream.Close() Jeżeli to nie pomoże, to nie kod, ale coś ze środowiskiem/kompem masz nie tak. Chyba, że jednak to kod jeżeli nie pokazałeś wszystkiego co robisz.

0

Dziękuję wszystkim za pomoc, lecz udało mi się wklepać ten kod karoLa:

using(StreamReader reader = new StreamReader(@"C:\Cos.txt"))
{
// twoj kod robiacy cos z plikiem
}

Jeszcze raz wielkie dzięki!

0
Fr33Q napisał(a)

Ale to chyba to samo, tylko skraca zapis.

A może nie pokazałeś nam całego kodu który obsługuje ten plik (z obydwu okienek)? Wg tego co na razie wiemy, to wszystko powinno być ok, a w czym jest problem to można by sobie zgadywać...

z tego co wiem to nie, poniewaz plik jest ładowany do strumienia i po chwili zamykany takrze nie trzeba się martwić o zamkniecie.

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