#ziplib - .NET2.0 - ZipEntry - Datei Attribute mit einschließen?

Asterix-Ac

Erfahrenes Mitglied
Hallo Leute,

nun habe ich es geschafft, komplette Ordnerstrukturen zu zippen - Dank des Beitrages von Alex.
Ein Problem habe ich allerdings noch : Die Dateiattribute der zu zippenden Dateien mit einzu schließen.
In der SharpZipLib Doku stand bei ZipEntry die Eigenschaft 'ExternalFileAttributes' in Verbindung mit dem 'HostSystem' = Dateisystem.
Also ich weiß, was gemeint ist, aber ich weiß nicht, wie ich es anstellen soll, die Dateiattribute mit einzuschließen.
Darauf folgt dann auch gleich die nächste Frage : ist es Wurst, welches Dateisystem man beim Auspacken hat oder muss man das dort dann auch wieder mit angeben?

Wie immer, danke für jede Antwort,

Asterix
 

Asterix-Ac

Erfahrenes Mitglied
Also es scheint wohl keiner was richtiges darüber zu wissen. Ich habe auch mal ins ic#code-Forum geschrieben und dort habe ich nun - so wie ich es verstanden habe - herausgefunden, das es zwar eine Möglichkeit geben soll, aber die scheint mir doch etwas kompliziert und noch nicht ausgereift.

Ich habe nun eine Textdatei angelegt in der ich genau verzeichne, welche Dateien und Ordner ich zippe und welche Attribute(=int-Wert) diese vor dem zippen hatten. Diese Datei zippe ich als letztes mit ein. Beim Auspacken schaue ich einfach in diese Textdatei und gebe den entsprechenden Dateien die entsprechenden Attribute.

Diese Methode verfolge ich solange, bis es möglich ist, die Attribute mit einzuzippen und auch wieder mit auszupacken.

Asterix
 

Norbert Eder

Erfahrenes Mitglied
Sollte ansich so gehen:
C#:
myZipEntry.ExternalFileAttributes = FileInfo.Attributes;

Ich denke, dass das Filesystem hier wenig damit zu tun hat.
 

Asterix-Ac

Erfahrenes Mitglied
Hallo Norbert,

danke für Deinen Tipp. Das hat auch tatsächlich funktioniert.
Mein Problem besteht nun weiterin, dass ich nach dem Beispiel von Alex die Attribute nicht wieder ausgepackt bekomme (zumindest dann, wenn es sich um schreibgeschützte und versteckte Dateien handelt).
Ich habe es schon mit
Code:
FileIOPermission f = new FileIOPermission(PermissionState.None);
f.SetPathList(FileIOPermissionAccess.AllAccess,System.IO.Path.Combine(dir_name, file_name));
versucht. Aber das hat leider auch nicht so ganz geklappt.
hast Du noch eine Idee ?

Asterix
 

Norbert Eder

Erfahrenes Mitglied
Kann es sein, dass du da etwas verwechselst, oder gar etwas ganz anderes willst, als du gefragt hast?

Die Attribute einer Datei haben nichts mit den Rechten der Datei zu tun.

Attribute -> ReadOnly, Archive etc.
FileIOPermission -> Read, Write, Append, PathRecovery

Du sprichst also jetzt zwei unterschiedliche Punkte an.
 

Asterix-Ac

Erfahrenes Mitglied
Hallo Norbert,

Also...
beim Auspacken der Dateien aus dem ZipFile mit der Methode von Alex ( der mit der using-Direktive arbeitet) erhalte ich immer eine UnauthorizedAccessException.
Nämlich dann, wenn ich in der using-Direktive File.Create auf eine ReadOnly oder Hidden Datei anwende, die sich in der ZipDatei befindet.
Ich habe dazu an zu wenig Rechte gedacht, das scheint ja nicht der Fall zu sein. Du hast mich darauf gestossen.

Wie kann ich sowas umgehen und auch diese Dateien auspacken?

Asterix