Avatar billede snoopidoo Praktikant
11. juli 2007 - 10:38 Der er 2 kommentarer og
1 løsning

Skal dele en txt fil op i flere små txt filer

Jeg er ikke så ferm til programmering mere, men husker at have lavet et simpelt program, til at læse fra en txt fil og skrive til en anden txt fil.

Det jeg har brug er at læse fra en txt fil og skrive nøjagtig det samme i en ny fil, så jeg får flere mindre filer.

Eksempelvis så jeg læser 65.000 linjer af gangen og skriver ind i en ny fil, hvorefter de næste 65.000 linjer læses og skrives ind i endnu en fil osv. osv. indtil hele filen er delt op.
Avatar billede bubbaa Nybegynder
11. juli 2007 - 10:50 #1
http://www.csharp-station.com/HowTo/ReadWriteTextFile.aspx
Du bør kunne sætte Console.WriteLine(tr.ReadLine()); ind i en for sætning og derved få læst de linier du vil.
Avatar billede old-faithful Praktikant
11. juli 2007 - 12:26 #2
Er det vigtigt at du selv skal lave programmet?

Ellers findes der allerede gratis programmer som kan splitte tekstfiler (txt) op i mindre dele, f.eks.:
  • Text Split 1.5: http://www.maliska.net/mal/
  • TextWedge: http://www.homestead.com/adriancarter/index.html
  • JR Split File (med batchfil til at samle igen): http://www.spadixbd.com/freetools/jsplit.htm
Avatar billede lifo Nybegynder
11. juli 2007 - 14:21 #3
her er et eksempel som du kan lave om på

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace Eksperten
{
    public class TextSplitter
    {
        private int antalLinjerPrFil = 1000;
        public int AntalLinjerPrFil
        {
            set { antalLinjerPrFil = value; }
        }

        public TextSplitter()
        {
        }

        public void SplitFil(string fileNavn)
        {
            StreamReader sr = null;
            StreamWriter sw = null;

            int nuværendeFilNummer = 1;
            int nuværendeLinjeNummer = 1;
            string linje ="";
            try
            {
                sr = new StreamReader(fileNavn);
                sw = new StreamWriter(Path.GetDirectoryName(fileNavn)+Path.GetFileNameWithoutExtension(fileNavn)+nuværendeFilNummer+Path.GetExtension(fileNavn));
                while ((linje = sr.ReadLine()) != null)
                {
                    nuværendeLinjeNummer++;

                    // check om vi skal lave en ny fil
                    if (nuværendeLinjeNummer % antalLinjerPrFil == 0)
                    {
                        //luk den eksisterende writer
                        sw.Flush();
                        sw.Close();

                        // tæl nuværende fil op
                        nuværendeFilNummer++;
                        //lav ny fil
                        sw = new StreamWriter(Path.GetDirectoryName(fileNavn) + Path.GetFileNameWithoutExtension(fileNavn) + nuværendeFilNummer + Path.GetExtension(fileNavn));
                    }
                    sw.WriteLine(linje);
                }

            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.Write("Ups\n" + ex);
            }
            finally
            {
                if (sw != null) {sw.Flush(); sw.Close(); sw.Dispose();}
                if (sr != null) { sr.Close(); sr.Dispose(); }
            }
        }
    }
}

og brug af klassen

TextSplitter ts = new TextSplitter();
            ts.AntalLinjerPrFil = 2000;
            ts.SplitFil(@"c:\filMedMangeLinjer.txt");
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