Gå til innhold

C#: Maximum filepath problematikk ved lesing av fil


Anbefalte innlegg

Skrevet

Hei,

 

Jeg prøver å lese filstørrelsen på en katalog vhja c#.

Bruker

DirectoryInfo[] subDirs = root.GetDirectories("*", SearchOption.AllDirectories);

for å hente alle underkataloger og leser størrelse fra hver enkelt fil under dette.

Det funker i og for seg greit, men så har jeg ett problem med at filepath + fil i enkelte tilfeller overstiger 260 tegn, tydeligvis er en begrensning på Windows shell/API.

 

Noen som har noen ide til å komme rundt dette på? NTFS i seg selv ligger vel på rundt 32000.

 

har funnet https://msdn.microsoft.com/library/default....ming_a_file.asp

men ikke fått unicode løsningen til å virke.

 

Det å endre filstrukturer er dessverre ikke en løsning, da jeg ikke har kontroll over hva som blir lagt dit. Jeg skal kun samle inn total størrelse på mange kataloger.

 

mvh

Arathorn

Videoannonse
Annonse
Skrevet

Ser ut som eneste vei jeg kan komme rundt dette er ved å jobbe mot win32 API selv.

Får vel prøve meg på det....

Skrevet

Det kan virke som om dette er ett generelt problem.

 

Følgende kode klager dersom filepath blir over 260 tegn.

FileStream fs = new FileStream(filepath,FileMode.Open,FileAccess.Read)

 

Også System.IO.FileInfo(filepath) klager.

 

Dersom du har noen andre ideer til hvordan jeg skal komme meg rundt det så vil jeg gjerne høre det.

 

mvh

Arathorn

Skrevet

Klienten er Windows XP med SP2.

 

Bruker c# med visual studio express 2008.

dotnet 3.5

 

Problemet er ikke dotnet relatert i seg selv.

Explorer klarer heller ikke å åpne de samme filene.

Skrevet (endret)

NTFS har begrensning på 32000 tegn.

CD og FAT32 har begrensning på 256.

Men utforsker og dotnet har også denne begrensningen.

 

Enkelt å teste.

prøv å opprett 6 kataloger med 50 tegn under hverandre.

 

Du kan derimot lage ett share som mapper opp 4 katalog, og dermed få laget flere kataloger under der.

 

eks:

c:\Katalog1(50 tegn)\Katalog2(50 tegn)\Katalog3(50 tegn)\Katalog4(50 tegn)\Katalog5(50 tegn)\ Her vil du ikke få lagt til en katalog til

 

 

\\localhost\katalog4(50 tegn)\katalog5(50 tegn)\katalog6(50 tegn)

Her vil du få lagt til ny katalog

Endret av Arathorn

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...