Avatar billede mundt Nybegynder
03. januar 2005 - 09:13 Der er 14 kommentarer og
1 løsning

Redigere i tekstfil

Kan man ikke med StreamWriter åbne en tekstfil, løbe den igennem, undervejs redigere karakerer eller hele linier og gemme filen?
Avatar billede the_party_dog Nybegynder
03. januar 2005 - 09:18 #1
Du skal bruge stremreader til at læse filen, og streamwriter til at skrive den igen. Så kan du indlæse filen linje for linje, og undersøge linjen, og skrive den.
string FileRead = "c:\\tekst1.txt";
string FileWrite = "c:\\tekst2.txt";

StreamReader ReadFile = File.OpenText(FileRead);
                StreamWriter WriteFile = File.CreateText(FileWrite);

                while ((InputFile = ReadFile.ReadLine())!=null)
                {
                        WriteString = "";
                        SemiString = InputFile.Replace(" ","");
                        SemiString = SemiString.Replace("\t",";");
                        WriteString = SemiString;               
                        WriteFile.WriteLine(WriteString);
                   
                }

                ReadFile.Close();
                WriteFile.Close();

Her læser jeg filen igennem, linje for linje, og fjerner alle "tabs" og alle mellemrum.
Avatar billede mundt Nybegynder
03. januar 2005 - 09:20 #2
Dvs. jeg skal oprette en ny fil? Jeg kan ikke bare åbne den eksisterende, editere den og gemme filen selv igen?
Avatar billede the_party_dog Nybegynder
03. januar 2005 - 09:24 #3
hmmm... I teorien kan du vel nok... Den læser jo en linje af gangen, og skriver en linje af gangen. Så det burde ikke give problemer...
Avatar billede the_party_dog Nybegynder
03. januar 2005 - 09:31 #4
Det kan man ikke... Du kan ikke skrive og læse fra den samme fil, fordi den holder filen åben indtil du er færdig med at læse den. Kan du ikke bare skrive i en anden fil, og når du så er færdig, omdøbe den?
Avatar billede mundt Nybegynder
03. januar 2005 - 09:46 #5
Ja det er selvfølgelig en mulighed - men findes der ikke en anden klasse eller funtion som kan klare opgaven?
Avatar billede the_party_dog Nybegynder
03. januar 2005 - 09:50 #6
Søg på google, måske er der nogen som har lavet en klasse som klarer det du ønsker. Men løsningen ved at bygge selv, ville være noget lignende dette:

string FileRead = "c:\\tekst1.txt";
string FileWrite = "c:\\tekst2.txt";
string WriteString, InputFile, SemiString;

StreamReader ReadFile = File.OpenText(FileRead);
                StreamWriter WriteFile = File.CreateText(FileWrite);

                while ((InputFile = ReadFile.ReadLine())!=null)
                {
                        WriteString = "";
                        SemiString = InputFile.Replace(" ","");
                        SemiString = SemiString.Replace("\t",";");
                        WriteString = SemiString;               
                        WriteFile.WriteLine(WriteString);
                   
                }

        ReadFile.Close();
        WriteFile.Close();

        File.Copy(FileWrite, FileRead);
        File.Delete(FileWrite);

Nu kopiere den indholdet fra den fil som du lige har skrevet, over i den fil som du lige har læst fra. Og sletter den skrevne fil lige bagefter.
Avatar billede mundt Nybegynder
05. januar 2005 - 09:19 #7
Jeg skal lige ha et svvar for at kunne give point
Avatar billede the_party_dog Nybegynder
05. januar 2005 - 09:20 #8
done
Avatar billede mundt Nybegynder
05. januar 2005 - 09:20 #9
Tak for hjælpen!
Avatar billede the_party_dog Nybegynder
05. januar 2005 - 09:21 #10
Det var så lidt, hjalp det?
Avatar billede mundt Nybegynder
05. januar 2005 - 09:25 #11
Jeps
Avatar billede the_party_dog Nybegynder
05. januar 2005 - 09:26 #12
Du skal lige huske at klikke acceptere ;)
Avatar billede mundt Nybegynder
05. januar 2005 - 09:28 #13
Det har jeg gjort - se ud for hvor du selv har skrevet done.
Avatar billede the_party_dog Nybegynder
05. januar 2005 - 09:29 #14
ups.. Hov... hehe... Det må du undskylde... mine øjne er lidt trætte.. Forsat god dag! :9
Avatar billede thjal Nybegynder
30. oktober 2005 - 13:14 #15
Vil lige smide en kommentar - jeg har både skrevet og læst i en fil samtidigt - det gøres ved at skrive følgende fire linier (eksempel):

FileStream TheDBFileStreamW = new FileStream(DBFileName, FileMode.Open, FileAccess.Write, FileShare.Read);
FileStream TheDBFileStreamR = new FileStream(DBFileName, FileMode.Open, FileAccess.Read, FileShare.Write);
StreamWriter TheDBFileWriter = new StreamWriter(TheDBFileStreamW);
StreamReader TheDBFileReader = new StreamReader(TheDBFileStreamR);

Det eneste problem her er at det ikke er muligt at "placere" hvor StreamWriter" skal skrive - du kan kun skrive enten i toppen eller i bunden af filen... Det jeg så har gjort er at jeg har læst hele filen ind i en arraylist tilføjet det jeg ville til min arraylist og så skrevet den tilbage til filen - men altså uden først at skulle lukke for StreamReaderen.

Så det er bare en rettelse...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester