webForumDet fria alternativet

Filhantering upptagen fil.

.NET

7 svar · 646 visningar · startad av Zaiman

Medlem sedan dec. 20014 239 inlägg
Frågan#1

Har en rutin som preparera en fil och skapar en tempfil
I koden efter använder filen som skapades och det går bra första vändan.
Men när jag ska använda samma fil igen är den upptagen. Jag måste naturligvis stänga filen efter mig ... Men hur gör jag? Verkar ha hjärnblödning och är blind idag *suck* kan det bero på att det är fredag?

        public static void prepFile(string file, string renTo)
        {

            if (!File.Exists(("C:\\katalogen\\temp.txt")))
            {
                File.Create("C:\\katalogen\\temp.txt");

                System.Threading.Thread.Sleep(5000);
                
                
            }

            string filename = "C:\\katalogen\\temp.txt";

            using (TextReader reader = new StreamReader(file, System.Text.Encoding.Default, false))
            {
                using (TextWriter wr = new StreamWriter(filename, false, System.Text.Encoding.Default))
                {
                    string line = reader.ReadLine();
                    for (int i = 0; i < 2; i++)
                    {
                        line = reader.ReadLine();
                    }

                    while ((line = reader.ReadLine()) != null)
                    {

                        line = line.Trim('\"');
                        line = line.Trim('ê');
                        line = line.Trim('ë');
                        line = line.Trim('è');
                        line = line.Trim('à');
                        line = line.Trim('{');
                        line = line.Trim(';');
                        line = line.Trim('ë');
                        line = line.Trim('á');
                        line = line.Trim('ë');

                        if (line.Length < 12)
                        {
                            wr.WriteLine();
                        }
                        else
                        {
                            wr.WriteLine(line);
                        }

                    }
                }
            }
            // Kopiera till rätt filnamn
            File.Copy("C:\\katalogen\\temp.txt", renTo, true);

        }
Medlem sedan juni 20019 024 inlägg
#2
wr.Close

och

reader.Close
Medlem sedan dec. 20014 239 inlägg
#3

Jo det är sant men tyvärr så löser det inte problemet .. :)

Första gången den körs går det bra, andra gången är temp.txt upptagen :(

Medlem sedan dec. 20014 239 inlägg
#4

Gjorde även detta:

wr.dispose();

Verkar har löst det hela..

Medlem sedan juni 20019 024 inlägg
#5

Lite märkligt. Men såvitt jag vet så körs Close även när man kör Dispose. Åtminstone när det gäller dataanslutningar.

Bra att det löste sig dock. :)

Medlem sedan dec. 20014 239 inlägg
#6

Så det borde räcka med .Dispose ?

Medlem sedan dec. 20014 239 inlägg
#7

Hmmm.. Rackarns vad fel jag har.. Inte är det löst inte..

            if (!File.Exists(("C:\\katalogen\\temp.txt")))
            {
                File.Create("C:\\katalogen\\temp.txt");

                System.Threading.Thread.Sleep(5000);
                
                
            }

Denna kod verkar låsa filen även första gången..

Medlem sedan dec. 20014 239 inlägg
#8
 if (!File.Exists(("C:\\katalogen\\temp.txt")))
            {
                FileInfo fi = new FileInfo(@"C:\\katalogen\\temp.txt");
                FileStream fstr = fi.Create();
                fstr.Close();
                fstr.Dispose();

             }

Så.. Nu funkar det :)

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)