2016-06-26 18 views
0

Hilf mir bitteWas genau sollte ich in diesem Code-Ausschnitt ändern, damit ich einen Pfad zu einer Sicherungsdatei festlegen kann?

Ich kann wirklich nicht verstehen, wie man diesen Codeausschnitt ändert, um die Fähigkeit zu haben, einen Pfad zum Speichern der Datei festzulegen.

Ich brauche eine Datei entpacken. Ich möchte die Methode 2 Argumente geben: der erste ist der Pfad zu der Zip-Datei und der zweite ist der Pfad, wo Sie die entpackte Datei speichern möchten. Das ist es ... Aber es macht mich verrückt))

Ich habe den Code

public class Decompress { 
private String zipFile; 
private String location; 
private final String MY_LOG = "Decompress"; 

public Decompress(String zipFile, String location) { 
    this.zipFile = zipFile; 
    this.location = location; 
    dirChecker(""); 
} 

public void unzip() { 
    try { 
     FileInputStream fin = new FileInputStream(zipFile); 
     ZipInputStream zis = new ZipInputStream(fin); 
     ZipEntry ze; 

     while ((ze = zis.getNextEntry()) != null) { 
      Log.e(MY_LOG, "Unzipping " + ze.getName()); 

      if (ze.isDirectory()) { 
       dirChecker(ze.getName()); 
      } else { 

       write(zis, new FileOutputStream(location + ze.getName())); 
       zis.closeEntry(); 
      } 
     } 
     zis.close(); 

    } catch (Exception e) { 
     Log.e(MY_LOG, "unzip", e); 
    } 
} 

private void write(InputStream in, OutputStream out) throws IOException { 
    byte[] buffer = new byte[1024]; 
    int len; 

    while ((len = in.read(buffer)) >= 0) { 
     out.write(buffer, 0, len); 
    } 
    out.close(); 
} 

private void dirChecker(String dir) { 
    File f = new File(location + dir); 
    if (!f.isDirectory()) { 
     f.mkdirs(); 
    } 
} 

ich dies im Konstruktor gesetzt

zipFile = /storage/emulated/0/Android/data/com.example.android.camera2basic.demo/files/[email protected]/AvatarModelDir/new.zip 

und ich brauche diese new.zip innerhalb des aktuellen entpacken Verzeichnis AvatarModelDir. Nach diesem, habe ich ...

location = /storage/emulated/0/Android/data/com.example.android.camera2basic.demo/files/[email protected]/AvatarModelDir 

Und ich erwarte, dass der neue Pfad für unzip Dateien wie diese

/storage/emulated/0/Android/data/com.example.android.camera2basic.demo/files/[email protected]/AvatarModelDir/MyUnzip/Anna.dae 

sein wird, sondern schafft es dieses Verzeichnis

/storage/emulated/0/Android/data/com.example.android.camera2basic.demo/files/[email protected]/AvatarModelDirAnna/Anna.dae 

Warum es Anna an AvatarModelDir anfügte und warum es Dir auf Ebene [email protected] statt AvatarModelDir

erstellen

Ich brauche nur den Pfad zur zip Datei und den Pfad festgelegt, wo ich es in bis (Extract Directory)

ich der eingestellte Pfad zum Beispiel

/storage/emulated/0/Android/data/com.example.android.camera2basic.demo/files/[email protected]/AvatarModelDir 

und es entpacken erwarten entpacken will sollte eine Default name dirictory innerhalb AvatarModelDir erstellen und

/storage/emulated/0/Android/data/com.example.android.camera2basic.demo/files/[email protected]/AvatarModelDir/DefaultNameDirectory/... 

Antwort

1

Innen dirChecker Methode

aktuelle Zip-Datei entpacken
File f = new File(location + dir); 

Position und Verzeichnis verketten, anstatt einen neuen Pfad für das neue Verzeichnis zu erstellen.

Es sollte wie sein

String path = location + (!dir.isEmpty()?"/"+dir:""); 
File f = new File(path); 

Innen Dekomprimieren Constructor die dir name gesetzt, den Sie festgelegt werden soll.

dirChecker("MyUnzip"); 
+0

i gefolgt Sie vorschlagen, und Änderungen in 'dirChecker()' wie Sie gesagt haben und in Constructor, aber ich habe 'FileNotFoundException' in dieser Zeile' write (ZIS, neue Fileoutputstream (Standort + ze.getName ())) "Wie ist es möglich? Es gibt Dateien 100% –

+0

Ich habe vergessen, die andere Änderung zu erwähnen ** write (zis, neuer FileOutputStream (location + "/" + ze.getName())) **; –

+0

Ja! Wirklich Danke, ich verbringe viel Zeit zu versuchen, zu verstehen, wie es funktioniert ... Aber ich entferne "MyUnzip" aus dem Konstruktor, weil es 2 dir: 1 - MyUnzip (ohne etwas) und 2 - Anna (mit Dateien) erstellen. Ich entferne "MyUnzip" und alles ist in Ordnung. Ich habe einen solchen Pfad '/ Speicher/emuliert/0/Android/data/com.Beispiel.android.camera2basic.demo/files/ttt @ gmail.com/AvatarModelDir/Anna/'. –