Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *
- * Zips a file at a location and places the resulting zip file at the toLocation
- * Example: zipFileAtPath("downloads/myfolder", "downloads/myFolder.zip");
- */
- public boolean zipFileAtPath(String sourcePath, String toLocation) {
- // ArrayList<String> contentList = new ArrayList<String>();
- final int BUFFER = 2048;
- File sourceFile = new File(sourcePath);
- try {
- BufferedInputStream origin = null;
- FileOutputStream dest = new FileOutputStream(toLocation);
- ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
- dest));
- if (sourceFile.isDirectory()) {
- zipSubFolder(out, sourceFile, sourceFile.getParent().length());
- } else {
- byte data[] = new byte[BUFFER];
- FileInputStream fi = new FileInputStream(sourcePath);
- origin = new BufferedInputStream(fi, BUFFER);
- ZipEntry entry = new ZipEntry(getLastPathComponent(sourcePath));
- out.putNextEntry(entry);
- int count;
- while ((count = origin.read(data, 0, BUFFER)) != -1) {
- out.write(data, 0, count);
- }
- }
- out.close();
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- return true;
- }
- /*
- *
- * Zips a subfolder
- *
- */
- private void zipSubFolder(ZipOutputStream out, File folder,
- int basePathLength) throws IOException {
- final int BUFFER = 2048;
- File[] fileList = folder.listFiles();
- BufferedInputStream origin = null;
- for (File file : fileList) {
- if (file.isDirectory()) {
- zipSubFolder(out, file, basePathLength);
- } else {
- byte data[] = new byte[BUFFER];
- String unmodifiedFilePath = file.getPath();
- String relativePath = unmodifiedFilePath
- .substring(basePathLength);
- Log.i("ZIP SUBFOLDER", "Relative Path : " + relativePath);
- FileInputStream fi = new FileInputStream(unmodifiedFilePath);
- origin = new BufferedInputStream(fi, BUFFER);
- ZipEntry entry = new ZipEntry(relativePath);
- out.putNextEntry(entry);
- int count;
- while ((count = origin.read(data, 0, BUFFER)) != -1) {
- out.write(data, 0, count);
- }
- origin.close();
- }
- }
- }
- /*
- * gets the last path component
- *
- * Example: getLastPathComponent("downloads/example/fileToZip");
- * Result: "fileToZip"
- */
- public String getLastPathComponent(String filePath) {
- String[] segments = filePath.split("/");
- String lastPathComponent = segments[segments.length - 1];
- return lastPathComponent;
- }
- private static void zipFolder(String inputFolderPath, String outZipPath) {
- try {
- FileOutputStream fos = new FileOutputStream(outZip);
- ZipOutputStream zos = new ZipOutputStream(fos);
- File srcFile = new File(inputFolder);
- File[] files = srcFile.listFiles();
- Log.d("", "Zip directory: " + srcFile.getName());
- for (int i = 0; i < files.length; i++) {
- Log.d("", "Adding file: " + files[i].getName());
- byte[] buffer = new byte[1024];
- FileInputStream fis = new FileInputStream(files[i]);
- zos.putNextEntry(new ZipEntry(files[i].getName()));
- int length;
- while ((length = fis.read(buffer)) > 0) {
- zos.write(buffer, 0, length);
- }
- zos.closeEntry();
- fis.close();
- }
- zos.close();
- } catch (IOException ioe) {
- Log.e("", ioe.getMessage());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement