android 分文件夹压缩文件,如何压缩文件包括android中的子文件夹

该博客探讨了在Android环境中如何使用Java代码压缩包括子目录在内的多个文件。作者遇到的问题是在尝试压缩父目录及其子目录时遇到了空指针异常。提供的代码示例展示了如何获取文件路径,创建ZIP文件以及在压缩过程中处理子目录。问题在于`zip()`方法在读取某些路径时引发了空指针异常。作者寻求解决方案来避免这个错误。
摘要由CSDN通过智能技术生成

我想压缩多个目录。这意味着我有1个内部目录和1个父目录。现在我想压缩父目录。如何压缩文件包括android中的子文件夹

我使用如下代码:

我的文件路径:

/data/data/com/app/1430159400000/32640/Images/capture_Image_20150427_115541.png"

/data/data/com/app/1430159400000/32640/Images/capture_Image_20150427_115542.png"

/data/data/com/app/1430159400000/32640/Images/ChildImages/capture_Image_20150427_115543.png"

/data/data/com/app/1430159400000/32640/Images/ChildImages/capture_Image_20150427_115544.png"

/data/data/com/app/1430159400000/32640/Images/capture_Image_20150427_115545.png"

/data/data/com/app/1430159400000/32640/Images/capture_Image_20150427_115546.png"

从目录中获取文件: -

public void getListFilesForCreatingZip(File parentDir) {

String[] filesPath = null;

File[] files = parentDir.listFiles();

filesPath = new String[(int) parentDir.length()];

int index = 0;

int index1=0;

for (File file : files) {

if (file.isDirectory()) {

if(file.getName().equals("ChildImages"))

{

File[] files1 = file.listFiles();

for(File ss:files1)

{

filesPath[index]=ss.getPath();

index++;

}

}

} else {

filesPath[index] = file.getPath();

}

index++;

}

zip(filesPath, "PathName";

}

zip文件: -

public void zip(String[] _files, String zipFileName) {

try {

BufferedInputStream origin = null;

/*File root = Application.getInstance().getDir("bol", Context.MODE_PRIVATE);

File customDir = new File(root + File.separator + File.separator + PreferenceManagerForBol.getInstance().getBolSelectedDate() + File.separator + PreferenceManagerForBol.getInstance().getBolOrderNumber());

if (customDir.exists() == false) {

customDir.mkdirs();

} */

File file = new File(BolDetailsHandler.getInstance().createBasePath(), zipFileName + ".zip");

FileOutputStream dest = new FileOutputStream(file);

ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(

dest));

byte data[] = new byte[BUFFER];

for (int i = 0; i < _files.length; i++) {

if(!_files[i].contains(".zip"))

{

Logger.v("Compress", "Adding: " + _files[i]);

FileInputStream fi = new FileInputStream(_files[i]);

origin = new BufferedInputStream(fi, BUFFER);

ZipEntry entry = new ZipEntry(_files[i].substring(_files[i].lastIndexOf("/") + 1));

out.putNextEntry(entry);

int count;

while ((count = origin.read(data, 0, BUFFER)) != -1) {

out.write(data, 0, count);

}

origin.close();

}

}

out.close();

} catch (Exception e) {

e.printStackTrace();

}

}

当我使用以下代码我在zip()方法中面临空指针异常。当zip()方法尝试读取子路径并再次尝试读取父路径时,它显示空指针异常。

请让我有任何想法来解决这个问题。

+0

不要尝试调用空对象的方法 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值