Problemi s pristupom datoteci ( C# )

poruka: 13
|
čitano: 1.784
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
neaktivan
offline
Problemi s pristupom datoteci ( C# )

Exception koji mi se javlja je sljedeci:

 

The process cannot access the file 'D:\Program Files\...\Data.txt' because it is being used by another process.

 

A ovo je dio koda koji je za to kriv:

(neke funkcije  jos nisu dovrsene)

 

 

 

 

 

private bool firstTimeStart()

 

return true;

 

if (Directory.Exists(path + @"\WoW Server Selector"))

{

return false;

}

}

 

////////////////////////////////////////////////////////////////////////

 

public void programDataFiles()

{

 if (firstTimeStart())

{

Directory.CreateDirectory(path + @"\WoW Server Selector");

File.Create(path + @"\WoW Server Selector" + @"\Data.txt");

}

else

{

 

}

}

 

////////////////////////////////////////////////////////////////////////

 

public void setPath()

{

path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);

}

 

 

////////////////////////////////////////////////////////////////////////

 

 

public

 

ServerListManagment()

{

setPath();

programDataFiles();

streamer = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"\\WoW Server Selector\Data.txt",FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite);

citac = new StreamReader(streamer);

 

getNumberOfServers();

serverNames = new string [numberOfServers];

serverRealmList = new string [numberOfServers];

 

fillWithData();

}

 

 

 

 Na pocetku sam koristio samo StreamReader citac na ovaj nacin:

citac = new StreamReader(path + @"\...\Data.txt");

 

Procito sam na par foruma i ljudi su pricali da treba ubaciti ovaj FileStream, definirati postavke te njega ubaciti kao atribut za stvaranje novog StreamReader -a:

streamer = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"\\WoW Server Selector\Data.txt",FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite);

citac =

new StreamReader(streamer);

 

I to sam učinio baš zbog ovoga atributa:

FileShare.ReadWrite

koji bi mi navodno omogucio da se pise u datoteku istovremeno dok njoj pristupa neki drugi proces.

Međutim opet ista stvar :S

 

help me!! :(

 

 

Poruka je uređivana zadnji put uto 22.9.2009 12:55 (kung-fu).
 
0 0 hvala 0
16 godina
neaktivan
offline
Problemi s pristupom datoteci ( C# )

Ti imas vecih problema, taj tvoj kod je skroz zbrckan, mozda negdje uploadas pa da neko pogleda na brzinu,

a i pretpostavljam da ti se iznimka javlja pri pisanju a ne pri citanju file-a, nadam se da koristis StreamWriter za

pisanje, a ne StreamReader, i mozda bi trebao korisiti .close() metode StreamReader-a, Witer-a nakon sto zavrsis s

citanjem, pisanjem. Jesi probao bar sam malo debugirati, bar si stavi neke breakpointe pa idi korak po korak gdje mislis

da polazi po zlu, mozda nesto i otkrijes....

All religions are the same: religion is basically guilt, with different holidays.
 
0 0 hvala 0
17 godina
offline
Problemi s pristupom datoteci ( C# )

a jesi li ti uopce procitao neku knjigu o C# ili samo lovis komade koda po forumima??? na taj način NISTA neces nauciti niti ces ista napraviti - samo ces natuci hrpe koda koji nista ne radi ili radi jako lose!

prvo knjigu u ruke, pa ako uz knjigu i tipkanje koda iz knjige imas problema onda ides na forume, a ne ovako sa kopiranim kodom sa nekog foruma dodes na ovaj ili obrnuo....

i malo pogledaj po msdn-u...

Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
RE: Problemi s pristupom datoteci ( C# )
drnde kaže...

Ti imas vecih problema, taj tvoj kod je skroz zbrckan...

 Ma bio je on OK kad sam ga napravio, ali od kad mi javlja taj problem prilikom izvođenja totalno sam ga ispremjeso, ubacivo i izbacivo sve zive kodove koje sam smatro da bi mi mogli pomoc...

Hvala na trudu, probat cu neke od savjeta (ako ih vec nisam probo), ali problem jos stoji :S

17 godina
neaktivan
offline
RE: Problemi s pristupom datoteci ( C# )
sasa kaže...

a jesi li ti uopce procitao neku knjigu o C# ili samo lovis komade koda po forumima??? na taj način NISTA neces nauciti niti ces ista napraviti - samo ces natuci hrpe koda koji nista ne radi ili radi jako lose!

prvo knjigu u ruke, pa ako uz knjigu i tipkanje koda iz knjige imas problema onda ides na forume, a ne ovako sa kopiranim kodom sa nekog foruma dodes na ovaj ili obrnuo....

i malo pogledaj po msdn-u...

 Procito sam Joseph Mayo "C#" i uz odredjeno predznanje c++ moram reci da me tvoji tekst uvrijedio barem sto se samog jezika tice, sto se tice tehnologije koju koristim za Windows forme moram priznat da sam nov u tomei da je kod zbrckan, ali sam taj dio odlucio savladati na novi nacin - ne citanjem suhoparnih knjiga vec sam se uhvatio konkretnog problema... Jos moram napomenuti da mi je taj pristup spomenulo nekolicina programera s kojima sam imo priliku popricati. Pogledo sam na msdn-u i nisam naiso na nikakav primjer s kojim sam bilo sta rijesio ili postigo.

 

Btw spominjo si knjigu kao dobar pristup, iako cu jos neko vrijeme ucit ovako, bilo bi ljepo da mi kazes ako imas sta za preporucit...

16 godina
neaktivan
offline
RE: Problemi s pristupom datoteci ( C# )
kung-fu kaže...

 

  Na pocetku sam koristio samo StreamReader citac na ovaj nacin:

citac = new StreamReader(path + @"\...\Data.txt");

 

Procito sam na par foruma i ljudi su pricali da treba ubaciti ovaj FileStream, definirati postavke te njega ubaciti kao atribut za stvaranje novog StreamReader -a:

streamer = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"\\WoW Server Selector\Data.txt",FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite);

citac =

 

new StreamReader(streamer);

 

I to sam učinio baš zbog ovoga atributa:

FileShare.ReadWrite

koji bi mi navodno omogucio da se pise u datoteku istovremeno dok njoj pristupa neki drugi proces.

Međutim opet ista stvar :S

 

help me!! :(

 

 

  a zašto tribaš pisat u datoteku dok se čita?

i šta ustvari hoćeš napravit sa datotekom?

17 godina
offline
RE: Problemi s pristupom datoteci ( C# )
kung-fu kaže...
sasa kaže...

a jesi li ti uopce procitao neku knjigu o C# ili samo lovis komade koda po forumima??? na taj način NISTA neces nauciti niti ces ista napraviti - samo ces natuci hrpe koda koji nista ne radi ili radi jako lose!

prvo knjigu u ruke, pa ako uz knjigu i tipkanje koda iz knjige imas problema onda ides na forume, a ne ovako sa kopiranim kodom sa nekog foruma dodes na ovaj ili obrnuo....

i malo pogledaj po msdn-u...

 Procito sam Joseph Mayo "C#" i uz odredjeno predznanje c++ moram reci da me tvoji tekst uvrijedio barem sto se samog jezika tice, sto se tice tehnologije koju koristim za Windows forme moram priznat da sam nov u tomei da je kod zbrckan, ali sam taj dio odlucio savladati na novi nacin - ne citanjem suhoparnih knjiga vec sam se uhvatio konkretnog problema... Jos moram napomenuti da mi je taj pristup spomenulo nekolicina programera s kojima sam imo priliku popricati. Pogledo sam na msdn-u i nisam naiso na nikakav primjer s kojim sam bilo sta rijesio ili postigo.

 

Btw spominjo si knjigu kao dobar pristup, iako cu jos neko vrijeme ucit ovako, bilo bi ljepo da mi kazes ako imas sta za preporucit...

meni ta knjiga bas i nije legla.... to je ona od sams-a? krenuo sam čitati ali se nekako čovjek pogubi...

budem ti poslao neki popis...

e da, i nisam te htio uvrijediti vec samo upozoriti na to da ces skupljanjem dijelova koda teze nesto nauciti... nesto slicno sam ja na jednom projektu probao i na kraju sam odustao te uzeo jos jednu knjigu u nizu i nasao dosta odgovora.

Poruka je uređivana zadnji put uto 22.9.2009 23:08 (sasa).
17 godina
neaktivan
offline
RE: Problemi s pristupom datoteci ( C# )

Ma ubiti zurio sam se u skolu pa sam jedva stigo pobacat sve te komade izpremjesanih metoda pa je ispalo vrlo neuredno, pa sam cak pobrkao pisati i citati (ispricavam se na dozi nepotrebnog zbunjivanja).

 

here is the real deal:

 

  private bool firstTimeStart()
        {
            manageDirectory = new DirectoryInfo(path + @"\WoW Server Selector");
            if (manageDirectory.Exists)
            {
                return false;
            }
            else
            {
                manageDirectory.Create();

                manageTxt = new FileInfo(path + @"\WoW Server Selector\Data.txt");
                manageTxt.Create();
                manageTxt = new FileInfo(path + @"\WoW Server Selector\Note.txt");
                manageTxt.Create();

                pisac = new StreamWriter(path + @"\WoW Server Selector\Note.txt");
                pisac.WriteLine("ovdje ide neki note za citanje n' stuff");
                pisac.Flush();
                pisac.Close();

                return true;
            }
        }

 

Evo ovaj put sam imo vremena sve to poslozit u jednu funkciju (Deklariranje navedenih objekata te pridruzivanje vrijednosti varijabli path se nalazi izvan funkcije...).

Problem mi se javlja tjekom izvodjenja programa ukoliko manageDirectory.Exists vraca false vrijednost.

Otvara mi se prozor s naslovom "IOException was unhalted" te sadrzi tekst "The process cannot access the file 'D:\Program Files\WoW Server Selector\Note.txt' because it is being used by another process." te pokazuje na podcrtanu liniju koda.

 

Evo nadam se da je ovo dovoljno uredno...

 

Poruka je uređivana zadnji put uto 22.9.2009 23:16 (kung-fu).
17 godina
neaktivan
offline
RE: Problemi s pristupom datoteci ( C# )
sasa kaže...

meni ta knjiga bas i nije legla.... to je ona od sams-a? krenuo sam čitati ali se nekako čovjek pogubi...

budem ti poslao neki popis...

e da, i nisam te htio uvrijediti vec samo upozoriti na to da ces skupljanjem dijelova koda teze nesto nauciti... nesto slicno sam ja na jednom projektu probao i na kraju sam odustao te uzeo jos jednu knjigu u nizu i nasao dosta odgovora.

 ma nema beda, kazu da je kritika zdrava

Ni meni se ta knjiga bas ne svidja, kad sam je kupio dobio sam je u pola cijene jer se ne prodaje dobro...lol

Ali za naucit sam jezik kao takav je podnosljiva.

17 godina
offline
RE: Problemi s pristupom datoteci ( C# )

U kodu pozivaš metodu Create().

No pošto ne ideš preko using statement-a (koji to automatski radi), prije pisanja u datoteku trebao bi zatvoriti FileInfo sa manageTxt.Close().

17 godina
neaktivan
offline
RE: Problemi s pristupom datoteci ( C# )

Iako nisam siguran sto je to tocno using statement, usmjerio si me u pravom smjeru.

Izbacio sam cijeli:

 

manageTxt = new FileInfo(path + @"\WoW Server Selector\Data.txt");

manageTxt.Create();
manageTxt = new FileInfo(path + @"\WoW Server Selector\Note.txt");
manageTxt.Create();

 

.. te mi je:

 

pisac = new StreamWriter(path + @"\WoW Server Selector\Note.txt");
pisac.WriteLine("ovdje ide neki note za citanje n' stuff");
pisac.Flush();
pisac.Close();

 

odma stvorio Note.txt datoteku i ubacio u nju sto treba...

 

I dalje mi nije jasno zasto te dvije klase sa svojim funkcijama nisu mogle raditi zajedno na istoj datoteci

i btw manageTxt.Close(); javlja error:

-'System.IO.FileInfo' does not contain a definition for 'Close' and no extension method 'Close' accepting a first argument of type 'System.IO.FileInfo' could be found (are you missing a using directive or an assembly reference?)

17 godina
offline
RE: Problemi s pristupom datoteci ( C# )

Da... u biti je trebalo ići nekiStream = manageTxt.Create() i onda nekiStream.Close().

Ne možeš zatvoriti FileInfo. A naravno, možeš i koristiti solo StreamWriter pa neka se on brine o otvaranju nove datoteke.

 

17 godina
neaktivan
offline
RE: Problemi s pristupom datoteci ( C# )
kung-fu kaže...
sasa kaže...

a jesi li ti uopce procitao neku knjigu o C# ili samo lovis komade koda po forumima??? na taj način NISTA neces nauciti niti ces ista napraviti - samo ces natuci hrpe koda koji nista ne radi ili radi jako lose!

prvo knjigu u ruke, pa ako uz knjigu i tipkanje koda iz knjige imas problema onda ides na forume, a ne ovako sa kopiranim kodom sa nekog foruma dodes na ovaj ili obrnuo....

i malo pogledaj po msdn-u...

 Procito sam Joseph Mayo "C#" i uz odredjeno predznanje c++ moram reci da me tvoji tekst uvrijedio barem sto se samog jezika tice, sto se tice tehnologije koju koristim za Windows forme moram priznat da sam nov u tomei da je kod zbrckan, ali sam taj dio odlucio savladati na novi nacin - ne citanjem suhoparnih knjiga vec sam se uhvatio konkretnog problema... Jos moram napomenuti da mi je taj pristup spomenulo nekolicina programera s kojima sam imo priliku popricati. Pogledo sam na msdn-u i nisam naiso na nikakav primjer s kojim sam bilo sta rijesio ili postigo.

 

Btw spominjo si knjigu kao dobar pristup, iako cu jos neko vrijeme ucit ovako, bilo bi ljepo da mi kazes ako imas sta za preporucit...

 

Meni to zvuci kao odlicna metoda ucenja. OK, moras znati osnove jezika, sintakse i sl., medutim susretanje sa stvarnim problemom u programiranju i trazenja najefikasnijeg rjesenja moze mozda nekima biti daleko bolje nego pretipkavanje koda iz knjige.

 

Zapravo, mislim da se vise upamti rjesavanjem konkretnog problema, nego pretipkavanjem cijelih aplikacija.

 

No, to je valjda osobna stvar... :)

http://irale.deviantart.com
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice