StreamReader - problem z close.

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

xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

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


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
0

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

xeo545x39
Chodziło mi właśnie o sprawdzenie, tak jak napisał Fr33Q
SI
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 3 lata
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:

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

I analogicznie podobnie dla zapisywania.

ST
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 11 lat
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?


Pozdro & poćwicz!
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.

xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

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


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
0

Dałem już kod...

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

Potem:

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

xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

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


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
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.

karoL
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:24
0

Proponuje użyć

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

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

edytowany 1x, ostatnio: madmike
SI
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 3 lata
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ć...

xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
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.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
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!

karoL
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:24
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.