Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Menjanje stringa unutar fajla

[es] :: .NET :: .NET Desktop razvoj :: Menjanje stringa unutar fajla

[ Pregleda: 2331 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.adsl-a-1.sezampro.rs.



+322 Profil

icon Menjanje stringa unutar fajla31.05.2011. u 16:10 - pre 157 meseci
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.

[Ovu poruku je menjao Shadowed dana 31.05.2011. u 17:25 GMT+1]
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.adsl-a-1.sezampro.rs.



+322 Profil

icon Re: Menjanje stringa unutar fajla31.05.2011. u 17:30 - pre 157 meseci
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?
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.evj-kabel.net.



+14 Profil

icon Re: Menjanje stringa unutar fajla01.06.2011. u 23:51 - pre 157 meseci
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.
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

vujkev
Beograd

Član broj: 8072
Poruke: 1347
*.telekom.yu.



+104 Profil

icon Re: Menjanje stringa unutar fajla02.06.2011. u 02:09 - pre 157 meseci
Možda možeš da probaš sa RegEx-om
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.adsl-1.sezampro.rs.



+322 Profil

icon Re: Menjanje stringa unutar fajla02.06.2011. u 21:30 - pre 157 meseci
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.
 
Odgovor na temu

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
109.175.77.*



+13 Profil

icon Re: Menjanje stringa unutar fajla03.06.2011. u 08:23 - pre 157 meseci
Kao sto ti je Boris rekao, SQLite ti je najbolja solucija.

Imat ces problema, kad (ako) ti txt fajl naraste.
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.adsl-a-4.sezampro.rs.



+322 Profil

icon Re: Menjanje stringa unutar fajla03.06.2011. u 15:56 - pre 157 meseci
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.
 
Odgovor na temu

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
*.dynamic.telemach.ba.



+13 Profil

icon Re: Menjanje stringa unutar fajla03.06.2011. u 20:06 - pre 157 meseci
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

 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.zaslon-telecom.si.



+14 Profil

icon Re: Menjanje stringa unutar fajla06.06.2011. u 12:10 - pre 156 meseci
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.
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

Deep|Blue
Srce Srbije

Član broj: 631
Poruke: 1431
195.178.63.*

ICQ: 101830817


+314 Profil

icon Re: Menjanje stringa unutar fajla24.06.2011. u 10:51 - pre 156 meseci
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.
"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"
 
Odgovor na temu

sallle
Sasa Ninkovic
GTECH
Beograd

Član broj: 146
Poruke: 480
*.gtech.co.rs.

ICQ: 20785904


+4 Profil

icon Re: Menjanje stringa unutar fajla04.08.2011. u 15:04 - pre 154 meseci
kako topom ubiti muvu....

Zbog takvih problema je izmisljen (G)AWK.
 
Odgovor na temu

Deep|Blue
Srce Srbije

Član broj: 631
Poruke: 1431
195.178.63.*

ICQ: 101830817


+314 Profil

icon Re: Menjanje stringa unutar fajla12.08.2011. u 10:03 - pre 154 meseci
@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.

"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"
 
Odgovor na temu

sallle
Sasa Ninkovic
GTECH
Beograd

Član broj: 146
Poruke: 480
212.178.239.*

ICQ: 20785904


+4 Profil

icon Re: Menjanje stringa unutar fajla14.08.2011. u 04:10 - pre 154 meseci
skript.gawk:
Code:

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


Code:

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



 
Odgovor na temu

Deep|Blue
Srce Srbije

Član broj: 631
Poruke: 1431
195.178.63.*

ICQ: 101830817


+314 Profil

icon Re: Menjanje stringa unutar fajla19.08.2011. u 08:56 - pre 154 meseci
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?
"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"
 
Odgovor na temu

sallle
Sasa Ninkovic
GTECH
Beograd

Član broj: 146
Poruke: 480
*.finsoft.rs.

ICQ: 20785904


+4 Profil

icon Re: Menjanje stringa unutar fajla19.08.2011. u 15:13 - pre 154 meseci
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...
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Menjanje stringa unutar fajla

[ Pregleda: 2331 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.