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.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)