Gå til innhold

Anbefalte innlegg

Hei

 

Jeg har lagd et lite program for å kopiere noen filer, men av naturlige årsaker klarer den ikke å kopiere ut enkelte filer pga tilgangsrettigheter.

 

Jeg finner filene med å bruke DirectoryInfo.GetFiles() på en bestemt folder, som returnerer en array av FileInfo objekter. Når jeg får denne arrayen så itererer jeg denne og bruker FileInfo.CopyTo for å kopiere de.

 

Problemet er at når jeg ikke har tilgang så får jeg UnauthorizedAccessException. Grunnet hvordan koden min er bygd opp kunne jeg tenke meg å sjekke hvorvidt jeg har tilgang eller ikke FØR jeg i det hele tatt prøver å kopiere, og dermed unngå å få exception. Jeg finner alikevel ingen metode eller property for dette. Er det noen som har peiling på hvordan jeg kan løse dette?

 

Trenger ikke vite HVEM som har tilgang, kun hvorvidt programmet har lesetilgang eller ikke.

 

 

Setter enormt stor pris på all hjelp.

Lenke til kommentar
Videoannonse
Annonse
Det er dette jeg ønsker å unngå.

Hvorfor ønsker du å unngå det?

Fordi det å throwe exceptions er DØDSTREIGT...

 

Prøv for deg selv:

		Dim S As New Stopwatch
	S.Start()

	For i As Integer = 1 To 1000
		Try
			Throw New Exception("")
		Catch ex As Exception
		End Try
	Next

	MessageBox.Show(S.ElapsedMilliseconds)

Lenke til kommentar

Vel, dårlig praksis vet jeg ikke. Exceptions er en veldig grei måte å varsle om feil oppover i lagene dine. Kodemessig er det en god praksis å bruke exceptions fremfor å returnere og håndtere obskure feilkoder fra funksjoner. Med mindre man skriver all koden i UI laget, noe som neppe kan regnes som noen god praksis.

 

2000 milisekunder, dvs 2 sekunder ekstra på å kopiere 1000 filer. Vel, tror ikke det er de to sekundene som er den største tidstyven.

 

Alternativet er ikke gratis det heller. Hvor lang tid tar det å sjekke rettighetene på 1000 filer?

 

En annen ting er at man trenger rettigheter for å lese rettigheter på en fil. Hvis man ikke har leserettigheter på en fil er det naturlig å tenke seg at man mangler rettigheter til å lese rettighetene og da får man et exception og er like langt men med litt ekstra kode.

Lenke til kommentar
Jeg er enig med Wubbable her, men av ulike årsaker. Når du vet hva som genererer et exception, så kan du ta steg for å unngå at de skapes. Å da ta høyde for exceptions du kan unngå er dårlig praksis. Exceptions er for uforutsette ting.

 

Jeg er enig i at en skal unngå exceptions om mulig og praktisk, men jeg vet ikke om det er noen enkel vei utenom exceptions i dette tilfellet.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...