Błąd dostępu do bliku.

Błąd dostępu do bliku.
BB
  • Rejestracja:około 4 lata
  • Ostatnio:6 miesięcy
  • Postów:39
0

Cześć.
Dopiero zaczynam przygodę i zawsze staram się najpierw znaleźć rozwiązanie w internecie. Niestety poległem na niemożliwości edycji i zapisu pliku tekstowego. Gdy zapiszę plik jako konfiguracja3.txt wszystko działa, lecz chciałbym by plik konfiguracja1.txt nadpisać. Domyślam się że streamreader blokuje zapis tak?

Kopiuj

        private void button2_Click(object sender, EventArgs e)
        {
            StreamReader sr = new StreamReader(Application.StartupPath + "/" + "Konfiguracja1.txt");
            
            string[] lines = File.ReadAllLines(Application.StartupPath + "/" + "Konfiguracja1.txt");
            lines[1] = textBox1.Text;
            
            File.WriteAllLines(Application.StartupPath + "/" + "Konfiguracja1.txt", lines);

        }

Oto komunikat błędu:

System.IO.IOException: „The process cannot access the file 'C:\Users\bboyl\Desktop\Aplikacja 1\Aplikacja 1\bin\Debug\netcoreapp3.1\Konfiguracja1.txt' because it is being used by another process.”

edytowany 2x, ostatnio: bboylubsko
UR
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:360
1

Masz otwarty stream do odczytu tego pliku przez StreamReader, na dodatek chcesz otworzyć po raz drugi ten sam plik do odczytu w linijce 6, a w międzyczasie próbujesz jeszcze otworzyć ten plik do zapisu

Ta linijka nie jest w ogóle Ci potrzebna, więc ją wyrzuć.

Kopiuj
StreamReader sr = new StreamReader(Application.StartupPath + "/" + "Konfiguracja1.txt");
edytowany 1x, ostatnio: urke
BB
  • Rejestracja:około 4 lata
  • Ostatnio:6 miesięcy
  • Postów:39
0

Dzięki! Myślałem że coś źle napisałem i szukałem innego rozwiązania, a tu wystarczyło usunąć jedną linię... Jeszcze jedno pytanie - być może uda się zaoszczędzić dobre 2h w google - jak napisać ifa żeby wyświetlił messagebox z returnem gdy plik nie zostanie znaleziony oraz np. przez przypadek zedytuję plik konfiguracyjny tak, że linia którą chciałbym zmienić klikając przycisk button2 nie istniałaby?

UR
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:360
1

jak napisać ifa żeby wyświetlił messagebox z returnem gdy plik nie zostanie znalezion

https://docs.microsoft.com/en-us/dotnet/api/system.io.file.exists?view=net-5.0

Kopiuj
if(!File.Exists(pathToFile))
{
   //wyświetl message box
}

Lub łapiesz wyjątek FileNotFoundException https://docs.microsoft.com/en-us/dotnet/api/system.io.filenotfoundexception?view=net-5.0
podczas wywołania File.ReadAllLines

przez przypadek zedytuję plik konfiguracyjny tak, że linia którą chciałbym zmienić klikając przycisk button2 nie istniałaby?

Kopiuj
string[] lines = File.ReadAllLines(pathToFile);

if(lines.Length < 2) //bo odczytujesz z element z indeksu 1, czyli 2 element tablicy
{
   //wyświetl message box
}
edytowany 1x, ostatnio: urke
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:3561
0
bboylubsko napisał(a):

Jeszcze jedno pytanie - być może uda się zaoszczędzić dobre 2h w google - jak napisać ifa żeby wyświetlił messagebox z ...

Tu nie chodzi o google, a o przetwarzanie informacji w głowie.
Moim zdaniem nawet początkujący powinien przeczytać treść podanego wyjątku, i powinna dać do myślenia.

A pytanie o if'a do messageboxa to już kuriozum.
Tak, to NIGDY niczego nie osiągniesz w programowaniu - to PRZEDE WSZYSTKIM szukanie informacji i jej zestawianie, od elementu do ogółu (i na odwrót)

PS. Powiem Ci z sekretów zawodowych. Do znajdywania kawałków kodu w googlu tzreba być znacznie lepszym, niż gdyby pisać to samemu.
Trzeba obcy kod zrozumieć, złapać kontekst i **ocenić **(bo może być od ludzi słabszych od siebie)


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 2x, ostatnio: AnyKtokolwiek
UR
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 3 lata
  • Postów:360
0

Tak, to NIGDY niczego nie osiągniesz w programowaniu - to PRZEDE WSZYSTKIM szukanie informacji i jej zestawianie, od elementu do ogółu (i na odwrót)

A czy ty kiedykolwiek pomogłeś komuś na forum, zamiast narzekać na kod początkującego, krytykować i się wymądrzać?

Nie napisze od razu oprogramowania klasy enterprise, zaczyna od podstaw, czyli ifów, będzie musiał 20 razy tak zrobić, to sam się nauczy, że to donikąd nie prowadzi.
Przecież nie będzie tutaj jechał jak wyjadacz, jak widać, że nie zna podstaw.

AK
Jak nie umie napisać programu do liczenia jabłek, to jak mu pomoze google, które podpawia tylko programy do liczenia gruszek?
AK
A napisanie if'a nawet początkującemu zajmuje znacznie mniej, niż "2h w google", a przy tym coś się nauczy
BB
  • Rejestracja:około 4 lata
  • Ostatnio:6 miesięcy
  • Postów:39
0

W sumie ciekawy temat na dyskusję. Choć czuję się atakowany :). Nie dajmy się zwariować, dla mnie póki co pisanie programu jest jak łączenie puzzli. Środowisko mam od 3 dni. Szukałbym po prostu w google podobnych pytań i ich rozwiązań i ewentualnie pod moje potrzeby dostosował. Ja wiem co chcę zrobić - chodzi mi o to jak to przetłumaczyć żeby rozumiał to kompilator. Jeśli zobaczę, że coś działa w ten sposób, coś innego w inny to będę mógł później edytować kod pod inną potrzebę.

Właśnie takim szukaniem w google udało się napisać taki program:
2021-02-07_193414.png

Obsługiwałem wyjątki takie jak wartość null lub inne niż cyfra i przecinek w polach tekstowych lub wielokrotne przecinki. Spokojnie nie będę mistrzem w dwa tygodnie.

Teraz wiem jak wygląda składnia obsługi wyjątku braku linii i mogę ją stosować i konfigurować pod inne potrzeby.
Serdeczne podziękowania dla użytkownika urke!

edytowany 3x, ostatnio: bboylubsko

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.