我需要解压缩一个受密码保护的zip文件。
到目前为止,我得到了互联网的帮助,我试图理解代码。
但它抛出nullpointerexception。我真的很困惑。是“孩子”还是别的什么。请解释一下。
线程“main”java中出现异常。unzip2处的lang.NullPointerException。Unzip2。main(Unzip2.java:27)C:\Users\zxc\AppData\Local\NetBeans\Cache\8.2\executor snippets\run。xml:53:Java返回:1生成失败(总时间:0秒)
上面说在27号线上。
对于(最终文件子文件:File.listFiles()){
据我所知,nullpointerexception意味着我的变量为null,但我无法得到null在哪里以及如何修复它
这是我的完整代码。请开导我。
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package unzip2;
/**
*
* @author zxc
*/
import java.io.File;
import java.util.List;
import javax.swing.filechooser.FileNameExtensionFilter;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.FileHeader;
public class Unzip2 {
public static void main(String[] args) {
final FileNameExtensionFilter extensionFilter = new FileNameExtensionFilter("N/A","zip");
//Folder where zip file is present
final File file = new File("C:/Users/zxc/Desktop/ziptest/ziptest2.zip");
for (final File child : file.listFiles()) {
try {
ZipFile zipFile;
zipFile = new ZipFile(child);
if (extensionFilter.accept(child)) {
if (zipFile.isEncrypted()) {
//Your ZIP password
zipFile.setPassword("password");
}
List fileHeaderList = zipFile.getFileHeaders();
for (int i = 0; i < fileHeaderList.size(); i++) {
FileHeader fileHeader = (FileHeader) fileHeaderList.get(i);
//Path where you want to Extract
zipFile.extractFile(fileHeader, "C:/Users/zxc/Desktop/zipfile");
System.out.println("Extracted");
}
}
} catch (ZipException e) {
System.out.println("Please Try Again");
}
}
}
}
您不需要迭代文件处理程序。创建ZipFile对象时,只需传递文件
对象。
public class Unzip2 {
public static void main(String[] args) {
final FileNameExtensionFilter extensionFilter = new FileNameExtensionFilter("N/A","zip");
//Folder where zip file is present
final File file = new File("C:/Users/zxc/Desktop/ziptest/ziptest2.zip");
//for (final File child : file.listFiles()) {
try {
ZipFile zipFile;
zipFile = new ZipFile(file);
if (extensionFilter.accept(file)) {
if (zipFile.isEncrypted()) {
//Your ZIP password
zipFile.setPassword("password");
}
List fileHeaderList = zipFile.getFileHeaders();
for (int i = 0; i < fileHeaderList.size(); i++) {
FileHeader fileHeader = (FileHeader) fileHeaderList.get(i);
//Path where you want to Extract
zipFile.extractFile(fileHeader, "C:/Users/zxc/Desktop/zipfile");
System.out.println("Extracted");
}
}
} catch (ZipException e) {
System.out.println("Please Try Again");
}
//}
}
很简单,让我们看看javadoc:
公共文件[]listFiles()
返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件。如果此抽象路径名不表示目录,则此方法返回null。
您提供了一个文件名,并询问其路径。文件没有路径。因此返回null,而for(whatever:null)
将导致NPE。
所以这里真正的要点是:阅读文档,而不是盲目地写下一些代码,而不理解这些代码应该做什么。
答案是File
实例化上面的一行
//Folder where zip file is present
final File file = new File("C:/Users/zxc/Desktop/ziptest/ziptest2.zip");
您需要定义zip文件所在的文件夹,而不是zip文件本身
final File file = new File("C:/Users/zxc/Desktop/ziptest");
问题内容: 我已经使用Java创建了zip文件,如下所示 现在,我想在单击zip文件时提示我输入密码,然后解压缩zip文件。请任何帮助,我应该怎么走? 问题答案: 尝试以下基于以下代码Zip4j: 来自。 用法示例:
问题内容: 我已在网上上下搜索,但仍然找不到上述问题的解决方案。有谁知道为什么,如果可以的话,怎么做? 我得到的错误: 问题答案: 因为使用错误。:)从文档: ZipFile。extractall([path [,Members [,pwd]]]) 将存档中的所有成员提取到当前工作目录。 path指定要提取到的其他目录 。成员是可选的,并且必须是namelist()返回的列表的子集。pwd是用于加
问题内容: 我有一个受密码保护的Excel电子表格。我需要打开此电子表格并从中读取数据。我一直在尝试使用POI API无济于事。首选Java解决方案,但任何想法都会有所帮助。 编辑:是的,我有密码。该文件在excel中受密码保护;必须输入密码才能查看电子表格。 Edit2:我无法使用带有密码的POI打开它,我在寻找替代解决方案。 问题答案: 您可以使用JExcelApi。 自从我这样做已经有一段时
问题内容: 我有一个密码保护Excel文件的问题。 情况是,我有一个zip文件,其中有一个Excel文件。我需要编写一个Java程序,以密码保护Excel文件。因此,用户应该能够解压缩文件(压缩文件无需密码保护)。但是,Excel需要使用密码保护。当用户尝试解压缩文件时,他应该能够解压缩。当他尝试打开Excel文件(位于解压缩的文件夹内)时,它必须要求输入密码。问题类似于使用Java保护excel
问题内容: 我想使pdf文件受密码保护。我只是对它进行了搜索,并在下面找到了一个好的解决方案。它工作正常,但是使用下面给定的代码保护pdf后,它会清除pdf中已经存在的所有数据。 此代码使用的jar文件是: itextpdf-5.2.1.jar bcmail-jdk16-1.46.jar bcprov-jdk16-1.46.jar bctsp-jdk16-1.46.jar 保护PDF的代码: 我需