Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 14 odgovora
  • 3.645 pregleda

Najnovija ↓

Menjanje stringa unutar fajla 31.05.2011. u 17:10 · pre 187 meseci
izmenjeno 1 put, poslednji put Shadowed 31.05.2011. u 17:25
  1. Shadowed31.05.2011. u 17:25zapis iz teksta poruke
#1
Imam problem sa menjanjem odredjenog stringa unutar fajla. Nacin na koji sam do sada menjao sve zapise koji pocinju odredjenim stringom je sledeci:

Code (vbnet):

        Dim Fs As FileStream = New FileStream("c:\Test.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)
        Dim sw As New StreamWriter(Fs)
        Dim sr As New StreamReader(Fs)
        Dim str As String

        str = sr.ReadToEnd()
        str = str.Replace("Sta menjam", "U cega menjam")
        Fs.Position = 0
        Fs.SetLength(str.Length)
        sw.Write(str)
        sw.Flush()
        sw.Close()
        Fs.Close()

 


Na ovaj nacin menjam sve zapise tako reci u trenu a za ovaj program mi je brzina preko potrebna. E sad moj problem se odnosi na sledece.
Zapisi u datoteci su grupisani na ovaj nacin:

"zapis1","zapis2","zapis3"
"zapis1","zapis2","zapis3"
"zapis1","zapis2","zapis3"
"zapis1","zapis2","zapis3"
...
"zapis1",zapis2",zapis3"

Ako bih primenio gore prikazan code, promenio bih trazeni string u svim zapisima a meni to ne treba. Meni je potrebno da izmenu izvrsim samo npr u koloni zapis2. Znaci gde god da pronadje u koloni zapis2 trazeni string da ga promeni a da ne dira ostale kolone.
Re: Menjanje stringa unutar fajla 31.05.2011. u 18:30 · pre 187 meseci #2
Ustvari, pojednostavljeno, moje pitanje je da li za tako nesto postoji neka napredna brza funkcija ili cu istu brzinu postici prepisivajuci fajla liniju po liniju i praveci izmene. Tako napravljene izmene snimam u drugi fajl takodje liniju po liniju i na kraju ga zatvorim i promenim ime kako je glasio originalni fajl a njegovu kopiju brisem?
Re: Menjanje stringa unutar fajla 02.06.2011. u 00:51 · pre 187 meseci #3
Sa tako organizovanim fajlom (varijabilna duzina polja, sekvencijalno zapisano, bez indeksa) nemas nikakve sanse, moras skenirati red po red.

Ako moraju da budu fajlovi, za takvu vrstu promene najlakse i najbezbolnije je da napravis jedna kolona-jedan fajl, ako cesto menjas samo jednu kolonu u svim zapisima.
Mada najbolje je da koristis bazu, SQLite snima celu bazu u fajl i daleko je bolje resenje cak i od XML-a.
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Re: Menjanje stringa unutar fajla 02.06.2011. u 03:09 · pre 187 meseci #4
Možda možeš da probaš sa RegEx-om
Potpis
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
Re: Menjanje stringa unutar fajla 02.06.2011. u 22:30 · pre 187 meseci #5
Na kraju sam napravio citanje red po red. Mislio sam da ce to biti sporo ali zapravo nije uopste. E sad da li je moj racunar jak ili .... videcu kad pocne da radi. Bazu sam prvo pravio ali ona je dosta velika i nezgrapna za to i trebalo bi da je lako razmenjiva pa je fajl ipak bolje resenje.

Hvala na pomoci u svakom slucaju.
Re: Menjanje stringa unutar fajla 03.06.2011. u 16:56 · pre 187 meseci #7
Postoji li razlika izmedju SQLite i npr Access-ove baze? Prvo sam napravio verziju sa ovom drugom a onda sam shvatio da su fajlovi preveliki. Ono sto mi staje u fajl od 200-300kb kad se strpa u bazi dobije se 50mb. Kako fajl treba da bude lako razmenjiv to mi nije resenje.
Re: Menjanje stringa unutar fajla 03.06.2011. u 21:06 · pre 187 meseci #8
Da, razlika postoji izmedju ta dva sistema. Potrazi po google.

Sto setice koristenja SQLite, mozes pogledati dole navedeni thread. Jeste da je pisan za WPF, ali slobodno ignorisi XAML, i obrati paznju na C# kod.

Kod je lagan, tako da ces bez problema istu stvar uraditi i u VB.

http://www.elitesecurity.org/t399769-WPF-SQLite-How-to
Potpis

[IMG]http://img233.imageshack.us/img233/5078/thumbnailte1.th.jpg[/IMG]


They say I look like daddy :D
Re: Menjanje stringa unutar fajla 06.06.2011. u 13:10 · pre 187 meseci #9
Citat:
Ono sto mi staje u fajl od 200-300kb kad se strpa u bazi dobije se 50mb

Access jeste loš, ali nije toliko loš :). Jedino ako baza nije dugo kompaktovana, ali da dođe do 50Mb za 300Kb osnovnog teksta malo teže, pod normalnim okolnostima. Mada uvek bi se pre odlučio za SQLite nego za Access, osim ako ne treba neka integracija sa ostalim MS rešenjima, mada i za to mislim da postoji SQLite oledb provajder.
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Re: Menjanje stringa unutar fajla 24.06.2011. u 11:51 · pre 186 meseci #10
Kao što kolege kažu rad će ti se drastično usporavati sa porastom veličine fajla.

Preporuka bi bila SQL lite, a za razmenu informacija između više radnih mesta možeš da korstiš i xml fajlove.
Na taj način dobijaš veću brzinu, male fajlove za razmenu i malo više programiranja.:)

No ako baš želiš da insistiraš na fajlu, možeš da koristiš samo xml ...
u biti sve ti ostaje u jednom fajlu, koji učitavaš direktno u dataset sa kojim ti je kasnije drastično olakšan rad, a dodatno izbegavaš stalno vršljanje po dat fajlu.
U odnosu na čist dat fajl, xml fajl će da ti poraste oko 10% zbog tagova.
Potpis
"Hmmm", rekao je, "...suprostavlja se nadrealizmu prikrivene metafore..." Razmišljao je tome na trenutak, a onda je zatvorio beležnicu s mrkim osmehom.
"I smrt je za njih suviše dobra"
Re: Menjanje stringa unutar fajla 04.08.2011. u 16:04 · pre 185 meseci #11
kako topom ubiti muvu....

Zbog takvih problema je izmisljen (G)AWK.
Re: Menjanje stringa unutar fajla 12.08.2011. u 11:03 · pre 185 meseci #12
@sallle
Što top i što mušica?

Mušica je trenutno nedefinisana, mada je Blue82 naveo da mu je baza posatajala prevelika. Dakle moguće da bi od te mušice nastao i solidan slon. Bilo bi lepo da psotoji i opis te baze sa navedenim razlozima za toliki rast veličine.

Top?! - XML nikako ne bih nazvao topom, jer ima zbilja široko polje primena. SQL lite opet predstavlja krajnje jednostavan engine, ipak dovoljno jak da se snađe sa pristojnim bazama.

GAWK - Fino deluje na prvi pogled, ali to je opet ređe korišćen third party, još port sa linuxa i opet radi sekvencijalno sa običnim datotekama.
Potpis
"Hmmm", rekao je, "...suprostavlja se nadrealizmu prikrivene metafore..." Razmišljao je tome na trenutak, a onda je zatvorio beležnicu s mrkim osmehom.
"I smrt je za njih suviše dobra"
Re: Menjanje stringa unutar fajla 14.08.2011. u 05:10 · pre 185 meseci #13
skript.gawk:
Code:

BEGIN{
    FS=","
}
{
    gsub("sta menjam","u cega menjam",$2)
    print $0
}


Code:

gawk -f skript.gawk ulazni_fajl.txt > izlaz.txt



Re: Menjanje stringa unutar fajla 19.08.2011. u 09:56 · pre 185 meseci #14
Otprilike sam shvatio šta je GAWK, ali on i dalje ostaje 3rd party tool, dakle potrebne su instalacije dodatnih programa. upoznavanje sa sistem funkcionisanja. Distribucija i instalacija na strani klijenta (Što pogotovo može da donese glavobolje) ...

A početni zahtev plavog je bio
Citat:
Blue82: ... Meni je potrebno da izmenu izvrsim samo npr u koloni zapis2. ...


@jnk
Inače, kako se GAWK ponaša sa većim fajlovima?
Potpis
"Hmmm", rekao je, "...suprostavlja se nadrealizmu prikrivene metafore..." Razmišljao je tome na trenutak, a onda je zatvorio beležnicu s mrkim osmehom.
"I smrt je za njih suviše dobra"
Re: Menjanje stringa unutar fajla 19.08.2011. u 16:13 · pre 185 meseci #15
Citat:

Otprilike sam shvatio šta je GAWK, ali on i dalje ostaje 3rd party tool, dakle potrebne su instalacije dodatnih programa. upoznavanje sa sistem funkcionisanja. Distribucija i instalacija na strani klijenta (Što pogotovo može da donese glavobolje) ...



Druze ja pricam o gawk.exe koji ima 191KB, i koji fajl od 2.5GB prolazi za 1.5min...

A ti ako mislis da treba da iznajmis MAN-ov sleper da bi se napravio krug oko ade, samo izvoli...
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme