Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako prepoznati zip fajl?

[es] :: Java :: Kako prepoznati zip fajl?

[ Pregleda: 2989 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.i-rose.si.

Sajt: b.flyingoranges.com


+117 Profil

icon Kako prepoznati zip fajl?09.07.2009. u 09:06 - pre 180 meseci
Pozdrav,

Ne znam da li tema pripada ovom forumu, ali u svakom slučaju kod je napisan na Javi... :)
Radim na programu koji extraktuje arhivski fajl. Fajl može biti tipa zip ili rar. Za zip koristim standardne Javine klase, za rar Junrar biblioteku. Trenutno se tip fajla prepoznaje na osnovu ekstenzije, ali naravno to nije dobro jer može da se dogodi da fajl ima neku treću ekstenziju tipa xxx, ili u najgorem slučaju da rar fajl ima zip ekstenziju ili obrnuto.

Linux ima komandu "file" gde ako upišem "file imefajla" ispisaće mi tačan format, bez obzira na ekstenziju, i čak će prepoznati i rar fajl preimenovan u zip. Gledao sam kod i dosta je komplikovan, koristi neki magic number itd... posle sam gledao i zip fajl u hex editoru i kako vidim svaki fajl na početku ima "PK"... ali nisam nigde našao dokumentaciju da je to stalno tako.

Da li zna neko neku metodu ili biblioteku koja će u skoro svakom slučaju prepoznati tačan format ova dva fajla? Mislim, najgluplje rešenje mi je da pokušam otvoriti fajl kao zip, pa ako se desi exception da probam sa rarom...
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.i-rose.si.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: Kako prepoznati zip fajl?09.07.2009. u 09:41 - pre 180 meseci
OK otkrio sam, rar fajl uvek ima Rar! na početku fajla :)
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Kako prepoznati zip fajl?09.07.2009. u 13:02 - pre 180 meseci
Evo delova iz magic fajla.

ZIP arhive imaju na početku bajtove "P" "K" 0x03 0x04
Četvrti bajt ukazuje na verziju zip fajla.

Code:

# ZIP archives (Greg Roelofs, c/o [email protected])
0       string          PK\003\004
>4      byte            0x09            Zip archive data, at least v0.9 to extract
>4      byte            0x0a            Zip archive data, at least v1.0 to extract
>4      byte            0x0b            Zip archive data, at least v1.1 to extract
>4      byte            0x14
>>30    ubelong         !0x6d696d65     Zip archive data, at least v2.0 to extract


Rar ima na početku string "Rar!", 44. bajt je oznaka verzije, a 35. bajt verzija operativnog sistema.

Code:

# RAR archiver (Greg Roelofs, [email protected])
0       string          Rar!            RAR archive data,
>44     byte            x               v%0x,
>35     byte            0               os: MS-DOS
>35     byte            1               os: OS/2
>35     byte            2               os: Win32
>35     byte            3               os: Unix
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.i-rose.si.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: Kako prepoznati zip fajl?09.07.2009. u 14:14 - pre 180 meseci
A jel imaš li ideju kako razlikovati glavni rar fajl od "delova"? Kad je rar razbijen na više fajlova onda svaka ima atribut "volume", a ja bih voleo da razlikujem prvi od ostalih.

I još nešto, gledam magic fajl i piše da se ARJ prepoznaje tako što
Code:
0    leshort        0xea60        ARJ archive data

pa kako prevesti ovaj "leshort" u Javin tip?
 
Odgovor na temu

Tulex
Danguba
Novi Sad

Član broj: 170959
Poruke: 121
*.prozone.rs.



Profil

icon Re: Kako prepoznati zip fajl?09.07.2009. u 14:52 - pre 180 meseci
Mozda nije direktno vezano za tvoje pitanje, ali evo jedna napomena.
Jesi li probao unzipovati neki neki zip fajl koji u sebi ima neke non-ANSII karaktere (cirilica, umlauti, kineska slova )
sa standardnom javinom bibliotekom?
Apache ima svoju verziju zip utility-ja koji moze da radi i sa ovim karakterima.

Bolje spreciti nego leciti

Pozz
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.dynamic.dsl.t-2.net.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: Kako prepoznati zip fajl?09.07.2009. u 15:09 - pre 180 meseci
Hvala za upozorenje, ovo je definitivno korisno!

Hmmm a jel bi mogao dati link na tu biblioteku? Ja ne mogu nigde da nadjem...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Kako prepoznati zip fajl?09.07.2009. u 15:22 - pre 180 meseci
leshort (pogledaj man magic) je 2 bajtni integer litlle-endian. To bi trebalo da znači da prvo ide bajt 0xea, pa onda 0x60. Čitaj bajt po bajt...
Što se tiče multivolume rar fajlova, ne znam kako da prepoznaš koji je koji volume.
 
Odgovor na temu

Tulex
Danguba
Novi Sad

Član broj: 170959
Poruke: 121
*.prozone.rs.



Profil

icon Re: Kako prepoznati zip fajl?09.07.2009. u 17:05 - pre 180 meseci
To je ant.jar
http://ant.apache.org/manual/install.html
a paket koji tebi treba u tom jar-u je
org.apache.tools.zip.*

mislim da apache takodje ima podrsku za tar, bz2 i gz.

nasao sam i ovu biblioteku (ova ima dodatnu klasu ZipArchiveInputStream koju ant nema)
http://commons.apache.org/compress/download_compress.cgi

treba ti ovaj paket org.apache.commons.compress.archivers.zip.*
 
Odgovor na temu

[es] :: Java :: Kako prepoznati zip fajl?

[ Pregleda: 2989 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.