Mam zabezpieczone hasłem spakowanym plik wideo zapisany na karcie SD na emulatorze Androida. Teraz chcę rozpakować ten plik wideo na karcie SD za pomocą kodu. Jak mogę to osiągnąć? Każda pomoc lub kod? góry dziękiRozpakuj spakowany plik na karcie SD w aplikacji Android
Odpowiedz
import android.util.Log;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/**
*
* @author jon
*/
public class Decompress {
private String _zipFile;
private String _location;
public Decompress(String zipFile, String location) {
_zipFile = zipFile;
_location = location;
_dirChecker("");
}
public void unzip() {
try {
FileInputStream fin = new FileInputStream(_zipFile);
ZipInputStream zin = new ZipInputStream(fin);
ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
Log.v("Decompress", "Unzipping " + ze.getName());
if(ze.isDirectory()) {
_dirChecker(ze.getName());
} else {
FileOutputStream fout = new FileOutputStream(_location + ze.getName());
for (int c = zin.read(); c != -1; c = zin.read()) {
fout.write(c);
}
zin.closeEntry();
fout.close();
}
}
zin.close();
} catch(Exception e) {
Log.e("Decompress", "unzip", e);
}
}
private void _dirChecker(String dir) {
File f = new File(_location + dir);
if(!f.isDirectory()) {
f.mkdirs();
}
}
}
CASE ::
String zipFilename = Environment.getExternalStorageDirectory() + "/files.zip";
String unzipLocation = Environment.getExternalStorageDirectory() + "/unzipped/";
Decompress d = new Decompress(zipFilename, unzipLocation);
d.unzip();
hej ta strona pokazuje "strona nie istnieje" –
Divyesh Dzięki za odpowiedź. Ale nadal jestem zdezorientowany, ponieważ mój spakowany plik jest chroniony hasłem, więc w jaki sposób dopasuję to hasło, aby wprowadzić plik? –
To tylko uzupełnienie twojej odpowiedzi, faktyczne czytanie i pisanie wpisów może być wykonane w porcjach o wiele wyższej wydajności zamiast bajt po bajcie: 'byte [] buffer = new byte [4096]; for (int c = zin.read (bufor); c! = -1; c = zin.read (bufor)) { fout.write (bufor, 0, c); } ' – nobre
Jest to nieco bardziej czystsze wersja kodu Samir jest z wykorzystaniem Apache IOUtils.copy()
do kopiowania plików i finally
bloku. Jeśli masz duże pliki w archiwum, lepiej użyj IOUtils.copyLarge()
.
import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class ZipUtils {
public static void unzip(InputStream is, File path) {
checkDir(path);
ZipInputStream zis = null;
FileOutputStream fos = null;
try {
zis = new ZipInputStream(is);
ZipEntry ze;
while ((ze = zis.getNextEntry()) != null) {
File entryFile = new File(path, ze.getName());
if (ze.isDirectory()) {
checkDir(entryFile);
} else {
fos = new FileOutputStream(entryFile);
IOUtils.copy(zis, fos);
fos.close();
fos = null;
}
zis.closeEntry();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (zis != null) {
try {
zis.close();
} catch (IOException ignore) {
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException ignore) {
}
}
}
}
private static void checkDir(File path) {
if (!path.exists()) {
path.mkdirs();
} else if (!path.isDirectory()) {
throw new IllegalArgumentException("Path is not directory");
}
}
}
Do rozpakowywania chroniony hasłem korzystać z pliku tej biblioteki:
http://www.lingala.net/zip4j/download.php
jest tak łatwo.
ZipFile zipFile = new ZipFile(YourZipFile);
if(zipFile.isEncrypted())
zipFile.setPassword(Password);
zipFile.extractAll(Destination);
- 1. strumienia wyjściowego android logcat na karcie SD
- 2. Android 4.4 KitKat folderu na karcie SD
- 3. Usunięcie folderu na karcie SD
- 4. Pobierz i rozpakuj spakowany plik gzip w pamięci?
- 5. Wydajność zapisu na karcie SD
- 6. Pozwolenie na zapis na karcie SD
- 7. Android - usuwaj pliki na karcie SD po odinstalowaniu
- 8. Udostępnianie obrazu android w ImageView bez zapisywania na karcie SD
- 9. Android - Zapisywanie pobranego obrazu z adresu URL na karcie SD
- 10. Wyświetl wszystkie muzykę na karcie SD
- 11. Przechowuj obraz bitmapowy na karcie SD w Androidzie
- 12. Ponownie uruchom usługę dla aplikacji na karcie SD Po wymianie karty SD
- 13. Rozpakuj plik tar.gz
- 14. Rozpakuj plik .zip
- 15. rozpakuj plik tar.gz w R?
- 16. Android Zapisywanie obrazów w SQLite lub na karcie SD lub w pamięci
- 17. Android: dobre praktyki dotyczące porządkowania katalogów i plików na karcie pamięci SD?
- 18. rozpakuj plik ZIP na Windows 8 C#
- 19. Jak zapisać obraz na karcie SD na przycisku Kliknij przycisk android
- 20. Sprawdź, czy jest wystarczająca pamięć na karcie SD programowo
- 21. Błąd "Nie można zainstalować na urządzeniu USB lub karcie SD" błąd podczas instalowania aplikacji na urządzeniach Samsung
- 22. Android 2.2 - Jak wykryć, czy jestem zainstalowany na karcie SD, czy nie?
- 23. Android Printing API na karcie Galaxy Tab
- 24. Jak otworzyć spakowany plik za pomocą WinRT
- 25. aplikacji nie można przenieść na kartę SD
- 26. jak uzyskać dostęp do plików w telefonie lub na karcie pamięci SD
- 27. Android: użyj bazy danych SQLite na karcie SD (w ogóle nie korzystaj z wewnętrznego magazynu danych Androida)
- 28. Android: Plik IO z karty SD za pomocą NDK
- 29. Spakowany plik z PHP powoduje, że plik cpgz po ekstrakcji
- 30. mkdir() działa w wewnętrznej pamięci flash, ale nie na karcie SD?
http://www.google.com/search?q=android+unzip+file – Caner
Wystarczy popatrzeć na ZipInputStream z Androidem stronie dewelopera: http://developer.android.com/reference/java /util/zip/ZipFile.html – Seph
To pytanie było już wielokrotnie zadawane. Jest w bibliotece Java, a nie Android. Zobacz tutaj: http://stackoverflow.com/questions/3382996/how-to-unzip-files-programmatically-in-android – HXCaine