Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Zip-header eller nåt

Postades av 2003-11-06 19:23:52 - Thomas Axelsson, i forum c# (c-sharp), Tråden har 7 Kommentarer och lästs av 1085 personer

Kan man tanka ner början av en zipfil så man får vilka filer som ingår? (finns ju förresten prg som gör sånt... så hur gör man?)

Mr T @thomasa88.homeip.net


Svara

Sv: Zip-header eller nåt

Postades av 2003-11-07 09:23:20 - Johan Bovin

hmm, blev lite intresserad själv. Hittade inget specifikt men jag ger dig två länkar iallafall.
Här är nån som har gjort det i vb, vet inte om det fungerar eller om du fattar nåt men där är väl principen iallafall:
http://groups.google.se/groups?hl=sv&lr=&ie=UTF-8&oe=UTF-8&selm=ezsZOGlNBHA.1444%40tkmsftngp03&rnum=8

Annars kan du ju alltid ladda ner ZipLib, där finns ju hela källkoden till ett zipprogram så där bör du kunna hitta nur du skall "parsa" fram vilka filer som finns:
http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx


Svara

Sv: Zip-header eller nåt

Postades av 2003-11-07 11:50:57 - Roger Alsing

kolla här:

http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=25781&lngWId=1

förvisso ett vb6 prog.
'browsen' är baserad på min gamla kod(...This program is an update for the code that Rang3r posted...)

koden är redigt otäck , använde strängar istället för bytearrayer men men..
det ska väll inte vara _helt_ omöjligt att tyda den..

//Roger


Svara

Sv: Zip-header eller nåt

Postades av 2003-11-07 15:46:27 - Thomas Axelsson

Roggan: ska försöka tyda den ;)

Arathorn: ska kolla på den med :)

Mr T @thomasa88.homeip.net


Svara

Sv: Zip-header eller nåt

Postades av 2003-11-11 15:09:54 - Johan Hultgren

Jag blev också lite intresserad av det här... Knappade ihop följande kod

<code>
using System;
using System.Net;
using System.Text;
using System.IO;

public class Test
{
public static void Main()
{
string url = "http://www.pellesoft.se/upload/program/prg00081.zip";
ZipEntry[] entries = GetZipEntries(url);
if (entries!=null) {
foreach(ZipEntry entry in entries)
Console.WriteLine(entry.Name + "\t\t" + entry.UncompressedSize);
}

Console.Read();
}

public static ZipEntry[] GetZipEntries(string url)
{
ZipEntry[] entries = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.AddRange(-22);
WebResponse response = request.GetResponse();
BinaryReader br = new BinaryReader(response.GetResponseStream());

if (br.ReadInt32() == 0x06054b50)
{
br.ReadBytes(6);
entries = new ZipEntry[br.ReadInt16()];
int length = br.ReadInt32();
int offset = br.ReadInt32();
br.ReadBytes(2);
br.Close();
response.Close();

request = (HttpWebRequest)WebRequest.Create(url);
request.AddRange(offset, offset+length);
response = request.GetResponse();
br = new BinaryReader(response.GetResponseStream());

for(int i=0;i<entries.Length;i++)
{
if (br.ReadInt32() == 0x02014b50)
{
ZipEntry entry = new ZipEntry();
entry.Version = br.ReadInt16();
entry.VersionNeeded = br.ReadInt16();
entry.Bitflag = br.ReadInt16();
entry.CompressionMethod = br.ReadInt16();
entry.FileTime = br.ReadInt16();
entry.FileDate = br.ReadInt16();
entry.CRC32 = br.ReadInt32();
entry.CompressedSize = br.ReadInt32();
entry.UncompressedSize = br.ReadInt32();
entry.NameLength = br.ReadInt16();
entry.ExtraFieldSize = br.ReadInt16();
entry.FileCommentLength = br.ReadInt16();
entry.DiskNumberStart = br.ReadInt16();
entry.InternalFileAttributes = br.ReadInt16();
entry.ExternalFileAttributes = br.ReadInt32();
entry.RelativeOffset = br.ReadInt32();
entry.Name = Encoding.UTF8.GetString(br.ReadBytes(entry.NameLength));
entries[i] = entry;

br.ReadBytes(entry.ExtraFieldSize + entry.FileCommentLength);
}
else
{
break;
}
}
}

br.Close();
response.Close();

return entries;
}

}

public struct ZipEntry
{
public short Version;
public short VersionNeeded;
public short Bitflag;
public short CompressionMethod;
public short FileTime;
public short FileDate;
public int CRC32;
public int CompressedSize;
public int UncompressedSize;
public short NameLength;
public short ExtraFieldSize;
public short FileCommentLength;
public short DiskNumberStart;
public short InternalFileAttributes;
public int ExternalFileAttributes;
public int RelativeOffset;
public string Name;
}
</code>


Svara

Sv: Zip-header eller nåt

Postades av 2004-01-07 16:11:34 - Thomas Axelsson

Skulle du kunna fixa en likadan funktion fast för att läsa lokala filer istället? (Får inte till addrange på File.OpenRead() :P)

- Thomas


Svara

Sv: Zip-header eller nåt

Postades av 2004-01-18 23:39:22 - Raderat konto

Så här?

<code>
using System;
using System.Text;
using System.IO;

public class Test
{
public static void Main()
{
ZipEntry[] entries = GetZipEntries("test.zip");
if (entries!=null) {
foreach(ZipEntry entry in entries)
Console.WriteLine(entry.Name + "\t\t" + entry.UncompressedSize);
}

Console.Read();
}

public static ZipEntry[] GetZipEntries(string filename)
{
ZipEntry[] entries = null;
FileStream fs = new FileStream(filename, FileMode.Open);
BinaryReader br = new BinaryReader(fs);
br.BaseStream.Position = br.BaseStream.Length-22;

if (br.ReadInt32() == 0x06054b50)
{
br.BaseStream.Position+=6;
entries = new ZipEntry[br.ReadInt16()];
br.BaseStream.Position+=4;
int offset = br.ReadInt32();
br.BaseStream.Position=offset;

for(int i=0;i<entries.Length;i++)
{
if (br.ReadInt32() == 0x02014b50)
{
ZipEntry entry = new ZipEntry();
entry.Version = br.ReadInt16();
entry.VersionNeeded = br.ReadInt16();
entry.Bitflag = br.ReadInt16();
entry.CompressionMethod = br.ReadInt16();
entry.FileTime = br.ReadInt16();
entry.FileDate = br.ReadInt16();
entry.CRC32 = br.ReadInt32();
entry.CompressedSize = br.ReadInt32();
entry.UncompressedSize = br.ReadInt32();
entry.NameLength = br.ReadInt16();
entry.ExtraFieldSize = br.ReadInt16();
entry.FileCommentLength = br.ReadInt16();
entry.DiskNumberStart = br.ReadInt16();
entry.InternalFileAttributes = br.ReadInt16();
entry.ExternalFileAttributes = br.ReadInt32();
entry.RelativeOffset = br.ReadInt32();
entry.Name = Encoding.UTF8.GetString(br.ReadBytes(entry.NameLength));
entries[i] = entry;

br.ReadBytes(entry.ExtraFieldSize + entry.FileCommentLength);
}
else
{
break;
}
}
}
br.Close();
fs.Close();

return entries;
}

}

public struct ZipEntry
{
public short Version;
public short VersionNeeded;
public short Bitflag;
public short CompressionMethod;
public short FileTime;
public short FileDate;
public int CRC32;
public int CompressedSize;
public int UncompressedSize;
public short NameLength;
public short ExtraFieldSize;
public short FileCommentLength;
public short DiskNumberStart;
public short InternalFileAttributes;
public int ExternalFileAttributes;
public int RelativeOffset;
public string Name;
}

</code>


Svara

Sv: Zip-header eller nåt

Postades av 2004-01-19 21:09:24 - Johan Hultgren

Så här?

<code>
using System;
using System.Text;
using System.IO;

public class Test
{
public static void Main()
{
ZipEntry[] entries = GetZipEntries("test.zip");
if (entries!=null) {
foreach(ZipEntry entry in entries)
Console.WriteLine(entry.Name + "\t\t" + entry.UncompressedSize);
}

Console.Read();
}

public static ZipEntry[] GetZipEntries(string filename)
{
ZipEntry[] entries = null;
FileStream fs = new FileStream(filename, FileMode.Open);
BinaryReader br = new BinaryReader(fs);
br.BaseStream.Position = br.BaseStream.Length-22;

if (br.ReadInt32() == 0x06054b50)
{
br.BaseStream.Position+=6;
entries = new ZipEntry[br.ReadInt16()];
br.BaseStream.Position+=4;
int offset = br.ReadInt32();
br.BaseStream.Position=offset;

for(int i=0;i<entries.Length;i++)
{
if (br.ReadInt32() == 0x02014b50)
{
ZipEntry entry = new ZipEntry();
entry.Version = br.ReadInt16();
entry.VersionNeeded = br.ReadInt16();
entry.Bitflag = br.ReadInt16();
entry.CompressionMethod = br.ReadInt16();
entry.FileTime = br.ReadInt16();
entry.FileDate = br.ReadInt16();
entry.CRC32 = br.ReadInt32();
entry.CompressedSize = br.ReadInt32();
entry.UncompressedSize = br.ReadInt32();
entry.NameLength = br.ReadInt16();
entry.ExtraFieldSize = br.ReadInt16();
entry.FileCommentLength = br.ReadInt16();
entry.DiskNumberStart = br.ReadInt16();
entry.InternalFileAttributes = br.ReadInt16();
entry.ExternalFileAttributes = br.ReadInt32();
entry.RelativeOffset = br.ReadInt32();
entry.Name = Encoding.UTF8.GetString(br.ReadBytes(entry.NameLength));
entries[i] = entry;

br.BaseStream.Position += entry.ExtraFieldSize + entry.FileCommentLength;
}
else
{
break;
}
}
}
br.Close();
fs.Close();

return entries;
}

}

public struct ZipEntry
{
public short Version;
public short VersionNeeded;
public short Bitflag;
public short CompressionMethod;
public short FileTime;
public short FileDate;
public int CRC32;
public int CompressedSize;
public int UncompressedSize;
public short NameLength;
public short ExtraFieldSize;
public short FileCommentLength;
public short DiskNumberStart;
public short InternalFileAttributes;
public int ExternalFileAttributes;
public int RelativeOffset;
public string Name;
}

</code>

/Johan


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 155
27 952
271 704
6 483
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies