Avatar billede isdan Nybegynder
28. august 2007 - 14:03 Der er 2 kommentarer og
1 løsning

"Filer" Skrive og læse fra fil samt navigere

"Filer" Skrive og læse fra fil samt navigere
top botton new line i mellem linje slet linje ect.
Avatar billede md_craig Nybegynder
28. august 2007 - 17:29 #1
Går ud fra du mener alm text filer (.txt) ?...

I Såfald kig på StreamReader for læse fil, og StreamWriter for at skrive...

Når du snakker navigering så går jeg ud fra vi snakker linie 1,2,3 og sidste linie ect?... det er lidt mere besværligt da normal seek bygger på bytes...

Så der må du nok hen og implementere noget selv... det samme gælder lidt for at slette og indsætte linier selv...

Her kommer det så lidt an på filens størelse... for små filer...
Indlæs hele filen, med det du beskriver så evt. linievis til en liste af strings... (List<string>)... og så manipuler med den...

Og så giv en Load og Save funktion...

Load:
Læser filen og fylder den interne liste...

Save:
Skriver alle linier i den interne liste ud til filen...

    public class TextFile : IEnumerable<string>
    {
        private string path;
        private List<string> lines;

        public TextFile( string fileName )
        {
            this.path = fileName;
            this.lines = new List<string>();

            this.Load();
        }

        public void Insert( string line )
        {
            this.lines.Add( line );
        }

        public void Insert( int index,string line )
        {
            if ( index < this.lines.Count )
                this.lines.Insert( index, line );
            else
                this.Insert( line );
        }

        public void Remove( int index )
        {
            if ( index < this.lines.Count )
                this.lines.RemoveAt( index );
        }

        public void Load()
        {
            this.lines.Clear();
            StreamReader reader = new StreamReader( this.path );

            string line;
            while ( ( line = reader.ReadLine() ) != null )
                this.lines.Add( line );
            reader.Close();
        }

        public void Save()
        {
            StreamWriter writer = new StreamWriter( this.path );

            foreach ( string str in this.lines )
                writer.WriteLine( str );
            writer.Close();
        }

        public IEnumerator<string> GetEnumerator()
        {
            foreach ( string str in this.lines )
                yield return str;
        }

        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            return this.GetEnumerator();
        }
    }

    class Program
    {
        static void Main( string[] args )
        {
            File.CreateText( "Test.txt" ).Close();

            TextFile txt = new TextFile( "Test.txt" );

            txt.Insert( "Dette" );
            txt.Insert( "Er" );
            txt.Insert( "En" );
            txt.Insert( "Test" );

            txt.Save();

            TextFile txt2 = new TextFile( "Test.txt" );

            foreach ( string str in txt2 )
                Console.WriteLine( str );
}
}
Avatar billede md_craig Nybegynder
28. august 2007 - 17:31 #2
Det er nok langt den nemmeste måde at manipulere med den slags filer for dig... hvis det er stører filer vi snakker om er det pluselig en anden sag da man så ikke bør loade hele filen op i memmory...

Så må du lige hører igen...
Avatar billede isdan Nybegynder
09. maj 2012 - 12:40 #3
luk
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