DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > Programiranje
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

Programiranje Java, Perl, VB, ASP, .NET, C, C++, Pascal, Delphi Sponzor: VIP izazov 3

Odgovori
 
Alati teme Način prikaza
Staro 13. 08. 2010.   #1
eraser
profesionalac
Qualified
 
Avatar eraser
 
Datum učlanjenja: 24.08.2009
Lokacija: Berlin
Poruke: 101
Hvala: 37
300 "Hvala" u 17 poruka
eraser is on a distinguished roaderaser is on a distinguished roaderaser is on a distinguished roaderaser is on a distinguished road
Default 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:
C:\Documents and Settings\test\Local Settings\Temp\Agilent Analytical Data Viewer\1131c4760ff24becac07a5cc2231ac29\1111111111 11111111111111111111111111111111111111111111111111 1111_19971025-002104-HPWBM187-LEO-1046-Administrator-DEMO-DEMODADN.d\CHROMS\00000001.WMF
tako da dobijem cesto putanje koje su duze od 260 karaktera, sto je Win ogranicenje i imam razne probleme kod prikaza fajlova.
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.
__________________
job board software | find job in USA

Poslednja izmena od eraser : 13. 08. 2010. u 17:28.
eraser je offline   Odgovorite uz citat
Staro 13. 08. 2010.   #2
LiquidBrain
Milan Cvejic
Wrote a book
 
Avatar LiquidBrain
 
Datum učlanjenja: 05.09.2006
Lokacija: Beograd
Poruke: 1.241
Hvala: 32
73 "Hvala" u 56 poruka
LiquidBrain će postati "faca" uskoro
Pošaljite poruku preko Yahoo za LiquidBrain
Default

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
LiquidBrain je offline   Odgovorite uz citat
Staro 13. 08. 2010.   #3
mileusna
Super Moderator
Knowledge base
 
Datum učlanjenja: 21.03.2006
Lokacija: Kragujevac
Poruke: 1.878
Hvala: 291
1.345 "Hvala" u 355 poruka
mileusna je jednostavno dobarmileusna je jednostavno dobarmileusna je jednostavno dobarmileusna je jednostavno dobarmileusna je jednostavno dobarmileusna je jednostavno dobarmileusna je jednostavno dobarmileusna je jednostavno dobarmileusna je jednostavno dobarmileusna je jednostavno dobar
Default

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
Znači npr. prema ovom gore listingu ti bi sa pathom C:\PROGRA~1\WI54FB~1\ dospeo u folder C:\Program Files\Windows Media Player\ sa velikom uštedom na broju karaktera.

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.
mileusna je offline   Odgovorite uz citat
Staro 20. 08. 2010.   #4
eraser
profesionalac
Qualified
 
Avatar eraser
 
Datum učlanjenja: 24.08.2009
Lokacija: Berlin
Poruke: 101
Hvala: 37
300 "Hvala" u 17 poruka
eraser is on a distinguished roaderaser is on a distinguished roaderaser is on a distinguished roaderaser is on a distinguished road
Default

Citat:
Originalno napisao mileusna Pogledajte poruku
Mada ako ovaj short file name može da se izvuče preko .NET frejmvorka, verujem da bi ti to sve rešilo.
Ako se fji. File.Exist() prosledi ShortFileNamePath izgleda da ga ona ipak konvertuje u LongName tako da fajl ne bude prepoznat da postoji.
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);
__________________
job board software | find job in USA

Poslednja izmena od eraser : 20. 08. 2010. u 10:38.
eraser je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum


Vreme je GMT +2. Trenutno vreme je 12:16.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.