Avatar billede anri Novice
24. juni 2008 - 14:01 Der er 5 kommentarer og
1 løsning

Teste om man kan skrive til fil

Jeg har en fil som jeg skal kunne skrive i, men inden jeg kommer så langt, skal jeg vide om man overhovedet kan skrive til filen.

jeg kan ikke benytte fileInfo.IsReadonly da denne ikke nødvendigvis vil være sat når der eksempeltvis er fjernet write permissions eller filen ligger på en CD-rom.

Er der en måde at teste for skrive-adgang UDEN af forsøge skrivningen?
Avatar billede aaberg Nybegynder
24. juni 2008 - 14:50 #1
Det smarteste er bare at prøve at skrive i filen, og håndtere eventuelle fejl.

Hvis du tjekker om brugeren har rettigheder til at skrive i filen, og derefter begynder at skrive, kommer du i en lidt uheldig "race condition" situation. Hvad nu hvis brugeren mister sine rettigheder imellem de 2 kodelinjer, eller et andet program åbner filen og låser den for skrivning? Da kommer der en fejl, hvilket vil betyde at du uanset skal håndtere fejl, hvilket igen vil gøre det første tjek overflødigt.

Mit råd er at forsøge at skrive til filen, og da håndtere de fejl som eventuelt opstår.
Avatar billede anri Novice
25. juni 2008 - 08:07 #2
Ja umiddelbart vil det være et godt forslag, men situationen er den at det er en 3. parts komponent der vil skrive til filen.

Det er en activeX komponent der uploader firmware serielt til noget specifik hardware og det fejler hvis der ikke kan skrives til firmware filerne.
Avatar billede wmann Nybegynder
09. juli 2008 - 10:23 #3
Du kan bruge "System.IO.File.OpenWrite" da den har en række exceptions den kommer med hvis der ikke er adgang til den.
jeg ved at når du skriver til en fil eller åbner en kan du sætte rettighederne på den som read,write,read/write men er ikke sikker på hvordan man gør for blot at læse disse værdier. De eksempler jeg har set har man blot forsøgt at skrive til filen og fanget en exception hvis der ikke var tilladelse til at skrive til filen.
Men skal du bruge det specifikt uden at skrive til den? Hvis du alligevel skal skrive til den så gør ovennævnte men ellers så tror jeg nok man kan læse adgangen via accescontrol men har ikke selv luret hvordan.. Men har heller ikke været nødvendigt.
Avatar billede wmann Nybegynder
09. juli 2008 - 10:28 #4
Ellers kan du måske bruge
System.IO.FileStream stream = new System.IO.FileStream("filepath_and_name", System.IO.FileMode.Open, System.IO.FileAccess.Write);
Derved skaber du en filestream til filen og checker om du kan åbne filen og om du får fileacces.write, da den ellers vil brokke sig med en exception.
Prøv at ligge den i en try-catch og så fang en exception hvis det ikke kan lade sig gøre.
Avatar billede anri Novice
14. februar 2009 - 10:39 #5
Ups..  LAd mig få denne lukket.

Jeg kunne godt bruge dine svar wmann, så credits er dine.
Avatar billede anri Novice
12. april 2012 - 11:26 #6
Lukker
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