Har fastnat i min program. har en statisk metod som skapar en fil och Problemet ligger i att du deklarerar variabeln fs i if-satsen, alltså inom if-satsens scoop (måsvingar). Vilket betyder att variabeln inte har deklarerats när du kommer till else-satsen. Körs else så betyder det ju att att inte if-satsen uppfyllts och körts mm..vet de där men problemet är att om jag bytter till så som du har skrivit klagar kompilatorn på att jag använder variabel som är oiniterad. "Use of unassigned local variable 'fs' ". Antingen kan du väl göra:FilHantering
skickar data till en binär fil. vill inte att den ska skapa en ny fil
varje gång den anroppas.
Problemet med koden här nere är att fs inte har åtkomst i else satsen.
public static void SkrivTillFil()
{
string FilNamn = "Resultat";
FileInfo info = new FileInfo(FilNamn);
BinaryFormatter bf = new BinaryFormatter();
if(!info.Exists)
{
FileStream fs = File.Create(FilNamn);
}
else
{
bf.Serialize(fs, lista);
fs.Close();
}
} Sv: FilHantering
Ändra till:
public static void SkrivTillFil()
{
string FilNamn = "Resultat";
FileInfo info = new FileInfo(FilNamn);
BinaryFormatter bf = new BinaryFormatter();
FileStream fs;
if(!info.Exists)
{
fs = File.Create(FilNamn);
}
else
{
bf.Serialize(fs, lista);
fs.Close();
}
}
Nu är åtmistonde existerar åtmistonde variabeln fs i else också men jag vet inte riktigt vad du vill göra med den där (är inte så insatt i fil-världen) men jag kan tänka mig att du får fel eftersom du fortfarande skapar filen i if-satsen vilket gör att antingen
bf.Serialize(...) eller fs.Close(...) kommer generera fel eftersom du försöker utföra något på ett objekt som inte skapats..
/ASv: FilHantering
vet inte hur jag ska komma runt problemet.
Vill bara att de ska kolla om filen är skapad, om nej : skapa en fil o skicka lista till fill. (lista är en ArrayList). om ja : skicka lista till filen uttan att skapa en till fil.
string FilNamn = "Resultat";
FileInfo info = new FileInfo(FilNamn);
BinaryFormatter bf = new BinaryFormatter();
FileStream fs;
if(!info.Exists)
{
fs = File.Create(FilNamn);
bf.Serialize(fs, lista);
fs.Close();
}
else
{
bf.Serialize(fs, lista);
fs.Close();
} Sv: FilHantering
if(!info.Exists)
{
fs = File.Create(FilNamn);
bf.Serialize(fs, lista);
fs.Close();
}
else
{
fs=File.OpenWrite(FilNamn);
bf.Serialize(fs, lista);
fs.Close();
}
eller så kan du ersätta ovanstående med
fs=File.Open(FilNamn,FileMode.OpenOrCreate); //öppnar eller om den inte finns skapar
bf.Serialize(fs, lista);
fs.Close();