C# VS2015, čtení a zápis do souborů Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

kimi999
Level 4
Level 4
Příspěvky: 1103
Registrován: duben 11
Pohlaví: Muž
Stav:
Offline

C# VS2015, čtení a zápis do souborů

Příspěvekod kimi999 » 10 čer 2016 12:22

Zdravím,

snažím se udělat v jednom kroku čtení a následný zápis (přepsání celého souboru). Bohužel program mi vrací chybu, že nelze do souboru nic zapsat, protože je používán jiný procesem. V kódu sice použiji příkaz na uzavření čtení, ovšem podle chyby tento příkaz buď není pro můj případ ten správný, nebo mám chybu jinde.

Soubor má příponu .dat jen pro efekt, jedná se o obyčejný textový soubor.

Kód: Vybrat vše

       umisteni = 10;
            hra = 0;
            celkovyCas = ((minuty * 6000) + vteriny * 10 + setiny );
            timerCas.Stop();

            string cestaVysledky = "C:/Bludiste/vysledky1.dat";
            NacteniVysledku[] vysl = new NacteniVysledku[5];
            StreamReader sr = new StreamReader(cestaVysledky);
            for (int i = 0; i < 5; i++)
            {
                int poradi = Convert.ToInt32(sr.ReadLine());
                string jmeno = sr.ReadLine();
                double vysledek = Convert.ToDouble(sr.ReadLine());
                vysl[i] = new NacteniVysledku(poradi, jmeno, vysledek);
                if (umisteni == 10)
                {
                    if (vysl[i].cas > celkovyCas)
                    {
                        umisteni = i;
                        delenaPozice = 0;
                    }
                    else if (vysl[i].cas < celkovyCas)
                    {
                    }
                    else
                    {
                        umisteni = i;
                        delenaPozice = 1;
                    }
                }
            }
            sr.Close();
            if (umisteni < 5)
            {
                int x = 4;
                do
                {
                    vysl[x].poradi = vysl[x].poradi;
                    vysl[x].jmeno = vysl[x - 1].jmeno;
                    vysl[x].cas = vysl[x - 1].cas;
                    x--;
                } while (umisteni < x);

                vysl[umisteni].poradi = umisteni + 1;
                vysl[umisteni].jmeno = prezdivka;
                vysl[umisteni].cas = celkovyCas;
                for (int i = 0; i < 5; i++)
                {
                    StreamWriter sw = new StreamWriter(cestaVysledky); // zde programu havaruje*
                    sw.WriteLine(vysl[i].poradi);
                    sw.WriteLine(vysl[i].jmeno);
                    sw.WriteLine(vysl[i].cas);
                }
            }
            else
            {
            }


*jedná se o tuto chybu: An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll
Additional information: Proces nemůže přistupovat k souboru C:\Bludiste\vysledky1.dat, protože soubor je využíván jiným procesem.

Díky za každou radu.

Reklama
Uživatelský avatar
Oxxid
člen BSOD týmu
Master Level 8
Master Level 8
Příspěvky: 6194
Registrován: prosinec 12
Pohlaví: Muž
Stav:
Offline

Re: C# VS2015, čtení a zápis do souborů

Příspěvekod Oxxid » 10 čer 2016 13:10

https://msdn.microsoft.com/en-us//library/yh598w02.aspx

Kód: Vybrat vše

using (StreamWriter sw = new StreamWriter("file.txt"))
{
    sw.Write("Hello IO!");
}

string text;
using (StreamReader sr = new StreamReader("file.txt"))
{
    text = sr.ReadToEnd();
}

kimi999
Level 4
Level 4
Příspěvky: 1103
Registrován: duben 11
Pohlaví: Muž
Stav:
Offline

Re: C# VS2015, čtení a zápis do souborů

Příspěvekod kimi999 » 10 čer 2016 18:39

Nejspíš si nerozumíme, nejdříve potřebuji načíst data o 15 řádcích a uschovat je na chvíli v programu (funguje), data upravím dle výsledku a následně do stejného souboru zapsat nová data (v podstatě přepsat soubor). Zapisování dat mi za normálních okolností také funguje, ale když chci v jednom kroku použít obě možnosti, nefunguje to.

Uživatelský avatar
lukas.sei
Level 4
Level 4
Příspěvky: 1070
Registrován: leden 13
Pohlaví: Muž
Stav:
Offline

Re: C# VS2015, čtení a zápis do souborů

Příspěvekod lukas.sei » 10 čer 2016 19:37


Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: leden 15
Bydliště: Krkonoše
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: C# VS2015, čtení a zápis do souborů

Příspěvekod satik » 10 čer 2016 20:01

Řádek s

Kód: Vybrat vše

StreamWriter sw = new StreamWriter(cestaVysledky); // zde programu havaruje*

hoď před ten for cyklus a nezapomeň za ten for cyklus taky hodit

Kód: Vybrat vše

sw.Close();


Každý soubor musíš po otevření taky zavřít a momentálně se snažíš 5x otevřít ten soubor pro zápis aniž by jsi ho předtím někde zavřel.
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index

kimi999
Level 4
Level 4
Příspěvky: 1103
Registrován: duben 11
Pohlaví: Muž
Stav:
Offline

Re: C# VS2015, čtení a zápis do souborů  Vyřešeno

Příspěvekod kimi999 » 10 čer 2016 22:17

Díky, teď to byla rada správným směrem :-)

takto už program pracuje správně.

Kód: Vybrat vše

StreamWriter sw = new StreamWriter(cestaVysledky);
                for (int i = 0; i < 5; i++)
                {
                    sw.WriteLine(vysl[i].poradi);
                    sw.WriteLine(vysl[i].jmeno);
                    sw.WriteLine(vysl[i].cas);
                }
                sw.Close();


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Tisk ELD souboru
    od Jandak » 30 dub 2023 09:53 » v Problémy s hardwarem
    4
    1144
    od Grander Zobrazit poslední příspěvek
    09 čer 2023 21:31
  • Přenos souborů SD - USB flash bez PC
    od Asanoth » 29 črc 2023 17:35 » v Sítě - hardware
    11
    2069
    od Grander Zobrazit poslední příspěvek
    30 črc 2023 15:20
  • Windows nezobrazuje podrobnosti souborů Příloha(y)
    od pepanecek5 » 04 úno 2024 14:01 » v Windows 11, 10, 8...
    4
    709
    od kecalek Zobrazit poslední příspěvek
    05 úno 2024 19:57
  • Jak hromadně změnit datum a čas souborů?
    od atari » 11 črc 2023 14:41 » v Programování a tvorba webu
    3
    2471
    od X Zobrazit poslední příspěvek
    14 črc 2023 15:17
  • Jak zjistit počet stažení souboru z websharu?
    od Kopusek » 17 dub 2024 12:41 » v Vše ostatní (inet)
    3
    1078
    od flowem Zobrazit poslední příspěvek
    18 dub 2024 11:06

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti