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.