13. 08. 2010. | #1 | |
profesionalac
Qualified
Datum učlanjenja: 24.08.2009
Lokacija: Berlin
Poruke: 101
Hvala: 37
300 "Hvala" u 17 poruka
|
Long paths in .NET
Imam desktop C# 2008 projekat koji koristi DynaZip komponentu.
Problem je sledeci: Cesto se pojavljuju arhive koje imaju dugacak naziv fajla a isti takav je naziv prvog foldera u arhivi, pa tek onda ide struktura foldera i fajlova koja je sustina same arhive. Kada pokusavam da izvucem neki fajl iz arhive on se smesta u Win temp folder, npr: Citat:
Da neko nije imao slican problem ili neko ima ideju kako bih mogao da prevazidjem problem. Napomena da se zip fajlovi kreiraju ko zna gde i da nije moguce uticati na strukturu kako se kreira ime arhive. Program radi tako sto ne unzipuje celu arhivu vec po potrebi ucita fajl u temp folder i prikaze ga odatle. Nadam se da sam uspeo da objasnim u cemu je problem. Poslednja izmena od eraser : 13. 08. 2010. u 17:28. |
|
13. 08. 2010. | #2 |
Milan Cvejic
Wrote a book
|
Probaj da promenish temp folder tako da stavish da bude u recimo C:\TMP...
Tu cesh da ustedish na jedno cetrdesetak karaktera...
__________________
http://weevify.com |
13. 08. 2010. | #3 |
Super Moderator
Knowledge base
Datum učlanjenja: 21.03.2006
Lokacija: Kragujevac
Poruke: 1.878
Hvala: 291
1.345 "Hvala" u 355 poruka
|
Ne znam koliko pomaže, ali svaki long filename bi trebao da ima i svoj ekvivalent u skraćenom obliku. Skraćene nazive fajlova iz komandne linije možeš da dobiješ kada otkucaš dir /X
Kôd:
C:\PROGRA~1>dir /X Volume in drive C is System Volume Serial Number is 8A14-5F09 Directory of C:\PROGRA~1 14.07.2009 07:32 <DIR> REFERE~1 Reference Assemblies 16.11.2009 13:59 <DIR> TORTOI~1 TortoiseSVN 14.07.2009 07:37 <DIR> WINDOW~3 Windows Defender 14.07.2009 09:47 <DIR> WI0FCF~1 Windows Journal 12.05.2010 20:26 <DIR> WINDOW~1 Windows Mail 08.11.2009 17:44 <DIR> WI54FB~1 Windows Media Player 14.07.2009 07:32 <DIR> WINDOW~2 Windows NT Ne znam konkretno da li ti ovo pomaže pošto ne razumem problem u potpunosti. Mada ako ovaj short file name može da se izvuče preko .NET frejmvorka, verujem da bi ti to sve rešilo. Edit: Izgleda da može iz .NET direktnim pozivom API funkcije GetShortPathName. Poslednja izmena od mileusna : 13. 08. 2010. u 19:44. |
20. 08. 2010. | #4 | |
profesionalac
Qualified
Datum učlanjenja: 24.08.2009
Lokacija: Berlin
Poruke: 101
Hvala: 37
300 "Hvala" u 17 poruka
|
Citat:
Nekako sam uspeo da prepravim app da koriscenjem UNICODE verzija odredjenih API fja. uspe da se izbori sa dugim putanjama (tako se maksimalna duzina povecava na 32000 karaktera) Kôd:
[DllImport("kernel32", CharSet = CharSet.Unicode)] public static extern IntPtr FindFirstFile(string lpFileName, out WIN32_FIND_DATA lpFindFileData); [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] static extern bool CopyFile(string lpExistingFileName, string lpNewFileName, bool bFailIfExists); Poslednja izmena od eraser : 20. 08. 2010. u 10:38. |
|
|
|