Načítanie veľkých textových súborov   otázka

VB.NET

Robim teraz program, ktorý riesi pripravu vstupnych dát a spracovanie vysledkov jedneho matematického modelu - konzolovu apliáciu - (hydrologický model - atmosferické zrážky, vyparovanie, tvorba snehu, presak vody cez pôdu, atď.). Pre tento učel generujem dáta v tabulke. Táto tabuľka obsahuje často 40 000 riadkov a cca 30 stlpcov.

Mojim problemom je, že neviem ako vyexportovat tieto dáta do textového suboru s tým, aby medzi stlpcami bol definovany priestor (napr. tri medzerníky)

Doteraz som pre tento účel použival kód typu:

                    Dim I, D As Integer
                    Me.TextBox5.Text = ""
                    For I = 0 To Me.DataGridView6.Columns.Count
                        Me.TextBox5.Text = Me.TextBox5.Text & Me.DataGridView6.Columns(I).HeaderText.ToString & vbTab
                    Next
                    Me.TextBox5.Text = Me.TextBox5.Text & vbNewLine
                    For D = 0 To Me.DataGridView6.Rows.Count - 2
                        For I = 0 To Me.DataGridView6.Columns.Count
                            Me.TextBox5.Text = Me.TextBox5.Text & Me.DataGridView6.Rows(D).Cells(I).Value & vbTab
                        Next
                        Me.TextBox5.Text = Me.TextBox5.Text & vbNewLine
                    Next
                    myStreamWriter = System.IO.File.AppendText(Save.FileName)
                    myStreamWriter.Write(TextBox5.Text)
                    myStreamWriter.Flush()

- ten je však v pripade veľkého množstva dát v tabuľke veľmi pomalý. Rovnako je to aj v pripade importu suboru do tabulky. Nevie mi niekto poradiť ako to ide spraviť rýchlejšie, pretože tento proces takto trva aj 10 minút, čo je strasne dlhá doba.

Ďakujem.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Načítání řešit pomocí OLEDB/ODBC providera pro textové soubory (již se zde několikrát řešilo), export pomocí přímého zápisu do Streamu (co je to proboha za zhovadělost to předtím všechno načítat do TextBoxu?!).

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

čau lidi mám problém když načtu text ze souboru.txt tak písmenka s háčkama a čárkama to vynechá a udělá to � nevím kam se píše UTF-8

 Dim file As String = "C:\Users\Bk-h\Desktop\otazky.txt" 'patch of the new to read¨.....'
        Dim reader As StreamReader = New StreamReader(file) ' create a streamreader'
        Dim line As Integer = TextBox1.Text
        If My.Computer.FileSystem.FileExists(file) Then ' if file exist, read it'

            For i = 0 To line
                TextBox2.Text = reader.ReadLine 'read intil your at the right line'
            Next
        Else
            MsgBox("soubor pravděpodobně neexistuje", MsgBoxStyle.Information, "ERROR") 'cach if error'
        End If
        

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

...StreamReader(file, System.Text.Encoding.UTF8)

Tak ale musíte textový soubor ukládat v UTF8 - když uložíte soubor s deafaultním nastavením, hodí se

...System.Text.Encoding.Default)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Bohužel to nevyšlo do VBcode jsem , System.Text.Encoding.UTF8 dopsal pak soubor.txt jsem v pspadu našel kódování utf-8 ,. vše jsem uložil a furt tam jsou otazníky. Prosím vás nevíte čím by to mohlo ještě být?

děkuji za odpověď

 Dim file As String = "C:\Users\Bk-h\Desktop\otazky.txt" 'patch of the new to read¨.....'
        Dim reader As StreamReader = New StreamReader(file, System.Text.Encoding.UTF8) ' create a streamreader'
        Dim line As Integer = TextBox1.Text
        If My.Computer.FileSystem.FileExists(file) Then ' if file exist, read it'

            For i = 0 To line
                TextBox2.Text = reader.ReadLine 'read intil your at the right line'
            Next
        Else
            MsgBox("soubor pravděpodobně neexistuje", MsgBoxStyle.Information, "ERROR") 'cach if error'
        End If

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pravděpodobně v textu již české znaky nejsou nebo nemá kódování UTF8.

>furt tam jsou otazníky

Kde je "tam"? Určitě ne v TextBox2 podle kódu, který uvádíte, protože v něm je jedna chyba za druhou - kde se vezme počet řádků v TextBox1? Zkuste spustit program při neexistujícím souboru.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

na text.box1 mám generování náhodných čisel a pak tam je když text.box1 se bude rovnat jedničce tak v text.box2 se ukáže první řádek textového souboru : 1. Za �kodu zp�sobenou zam�stnanci pracovn�m �razem ,..

když jsem spustil program při neexistujícím souboru tak ve Vstudiu mi to napsalo chybu a jako samotný .exe po uložení neexistujícího souboru to načetlo existující soubor

nahlásit spamnahlásit spam 0 odpovědětodpovědět

První dva řádky již soubor používají a teprve potom testujete jeho existenci.

TextBox.Text obsahuje data typu String, ne Integer - měl byste použít konverzi - proč však nepoužít vygenerované číslo rovnou?

Po použití souboru je třeba ho zavřít s reader.Close()

Jestli se bude z obsahu souboru číst opakovaně, pak by bylo vhodnější načíst obsah souboru do textového pole a z něho vytahovat řádek podle vygenerovaného čísla...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback