0 0

java 打包异常:ZIP file must have at least one entry15

   今天遇到个bug,在导出数据打成zip包的时候,在本机(xp)上成功,在服务器(linux)上报异常,
异常如下:ZIP file must have at least one entry。
    上网查了,但是更多的是关于路径名有中文的问题,但是我在本机和服务器上都是英文目录,以下是我
的部分代码:
         /**
	 * Creates a Zip archive. If the name of the file passed in is a directory,
	 * the directory's contents will be made into a Zip file.
	 */
	public static String makeZip(String fileName) throws IOException,
			FileNotFoundException {
		File file = new File(fileName);
		ZipOutputStream zos = null;
		try {
			zos = new ZipOutputStream(new FileOutputStream(file + ".zip"));
			// Call recursion.
			recurseFiles(file, zos);
		} finally {
			if (null != zos) {
				zos.close();
			}
		}
		return file + ".zip";
	}

 private static void recurseFiles(File file, ZipOutputStream zos)
			throws IOException, FileNotFoundException {
		if (file.isDirectory()) {
			// Create an array with all of the files and subdirectories
			// of the current directory.
			String[] fileNames = file.list();
			if (fileNames != null) {
				// Recursively add each array entry to make sure that we get
				// subdirectories as well as normal files in the directory.
				for (int i = 0; i < fileNames.length; i++) {
					recurseFiles(new File(file, fileNames[i]), zos);// 给子目录里的文件打包!!
				}
			}
		}
		// Otherwise, a file so add it as an entry to the Zip file.
		else {
			byte[] buf = new byte[1024];
			int len;
			// Create a new Zip entry with the file's name.
			ZipEntry zipEntry = new ZipEntry(file.getName());
			// Create a buffered input stream out of the file
			// we're trying to add into the Zip archive.
			FileInputStream fin = new FileInputStream(file);
			BufferedInputStream in = new BufferedInputStream(fin);
			zos.putNextEntry(zipEntry);
			// Read bytes from the file and write into the Zip archive.
			while ((len = in.read(buf)) >= 0) {
				zos.write(buf, 0, len);
			}
			// Close the input stream.
			in.close();
			// Close this entry in the Zip stream.
			zos.closeEntry();
		}
	}

2009年2月18日 11:16

4个答案 按时间排序 按投票排序

0 0

引用
ZIP file must have at least one entry。

所指路径里面没有文件所导致,查看一下打包路径是否有文件。

2009年2月20日 22:26
0 0

显然是ZIP里面没文件,肯定是路径问题

2009年2月19日 09:59
0 0

apache有个压缩API, 你去看看, 估计好用多了。

2009年2月18日 13:10
0 0

如果你的路径、文件名都没有问题,那么你看看你的jar是否出了问题

2009年2月18日 11:36

相关推荐

    23.java自定义异常.zip

    23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java自定义异常.zip23.java...

    Java多个文件根据URL下载后打包zip导出.zip

    3. **文件夹打包**:打包文件夹为ZIP文件,我们可以利用`java.util.zip`包中的`ZipOutputStream`和`ZipEntry`类。首先,遍历需要打包的目录,对每个文件创建一个`ZipEntry`,然后通过`ZipOutputStream`将文件内容...

    java课程设计:基于springBoot的家教管理系统.zip

    java课程设计:基于springBoot的家教管理系统.zip java课程设计:基于springBoot的家教管理系统.zip java课程设计:基于springBoot的家教管理系统.zip java课程设计:基于springBoot的家教管理系统.zip java课程设计...

    Java编程实战:企业进销存管理系统源码.zip

    Java编程实战:企业进销存管理系统源码.zip Java编程实战:企业进销存管理系统源码.zip Java编程实战:企业进销存管理系统源码.zip Java编程实战:企业进销存管理系统源码.zip Java编程实战:企业进销存管理系统源码...

    java课程设计:基于java实现的单机五子棋游戏的源代码.zip

    java课程设计:基于java实现的单机五子棋游戏的源代码.zip java课程设计:基于java实现的单机五子棋游戏的源代码.zip java课程设计:基于java实现的单机五子棋游戏的源代码.zip java课程设计:基于java实现的单机...

    java Zip打包完整例子

    综上所述,Java中实现Zip打包通常涉及创建`ZipOutputStream`,然后为每个要打包的文件或目录创建`ZipEntry`并写入。如果需要提高性能,可以考虑单独处理每个文件,而不是一次性打包整个文件夹。此外,还可以利用Ant...

    tomcat启动报错:java.util.zip.ZipException的解决方法

    在使用Apache Tomcat服务器时,有时会遇到启动异常的情况,其中一种常见的错误是`java.util.zip.ZipException`。这个异常通常表明在处理ZIP或JAR文件时遇到了问题,可能是因为文件损坏、格式不正确或者无法打开。在...

    java课程设计:基于java实现的中国象棋游戏-支持局域网联机对战.zip

    java课程设计:基于java实现的中国象棋游戏-支持局域网联机对战.zip java课程设计:基于java实现的中国象棋游戏-支持局域网联机对战.zip java课程设计:基于java实现的中国象棋游戏-支持局域网联机对战.zip java课程...

    Java安卓:猜地鼠游戏.zip

    Java安卓:猜地鼠游戏.zipJava安卓:猜地鼠游戏.zipJava安卓:猜地鼠游戏.zip Java安卓:猜地鼠游戏.zipJava安卓:猜地鼠游戏.zipJava安卓:猜地鼠游戏.zip Java安卓:猜地鼠游戏.zipJava安卓:猜地鼠游戏.zipJava...

    java zipentry.jar 解决解压失败问题

    Java的`java.util.zip`包提供了对ZIP文件的支持,包括`ZipInputStream`和`ZipOutputStream`类用于读写ZIP文件,以及`ZipEntry`类来代表ZIP文件中的单个条目。当我们尝试用这些类解压含有中文名的文件时,如果未正确...

    java多重打包解压ZIP文件

    ZipEntry zipEntry = new ZipEntry(path + file.getName()); zos.putNextEntry(zipEntry); zos.write(bytes); zos.closeEntry(); } } } ``` 在这个例子中,`zipFiles`方法接受一个文件名数组和目标ZIP文件名...

    java源码:Java zip压缩包查看程序源码.rar

    这个压缩包文件"Java源码:Java zip压缩包查看程序源码.rar"包含的是一个使用Java实现的程序,能够查看和操作ZIP压缩包。下面将详细探讨Java在处理ZIP文件格式时涉及的关键知识点。 1. ZIP文件格式:ZIP是一种常见...

    12.java异常的概念.zip

    12.java异常的概念.zip12.java异常的概念.zip12.java异常的概念.zip12.java异常的概念.zip12.java异常的概念.zip12.java异常的概念.zip12.java异常的概念.zip12.java异常的概念.zip12.java异常的概念.zip12.java异常...

    14.java异常处理机制.zip

    14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理机制.zip14.java异常处理...

    个人java学习项目一:简易拼图游戏.zip

    个人java学习项目一:简易拼图游戏.zip个人java学习项目一:简易拼图游戏.zip 个人java学习项目一:简易拼图游戏.zip个人java学习项目一:简易拼图游戏.zip 个人java学习项目一:简易拼图游戏.zip个人java学习项目一...

    java 文件夹打包 zip

    在Java编程环境中,打包文件或文件夹是一项常见的任务,特别是在软件开发过程中,我们需要将源代码、资源文件等打包成一个可分发的格式,如.zip。在这个场景中,我们使用了Java来实现文件夹的打包功能,并且依赖了...

    zipJava.zip

    本篇将深入讲解如何使用Java实现将文件打包成ZIP的过程,主要围绕"zipJava.zip"中的核心源码文件"ZipWriter.java"展开。 首先,我们需要了解Java的`java.util.zip`包,这个包提供了处理ZIP文件的类,如`...

    java读取zip文件

    在Java编程环境中,读取ZIP文件是一项常见的任务,特别是在处理归档数据或打包资源时。以下将详细讲解如何使用Java来实现这一功能。 首先,Java提供了`java.util.zip`包,该包包含了处理ZIP文件所需的类,如`...

    java加密解密zip压缩包

    为了实现ZIP文件的加密,我们需要依赖第三方库,例如Apache Commons Compress或者Java 7及以上版本引入的`java.nio.file`和`java.util.zip`中的`ZipFile`和`ZipEntry`类。 对于ZIP 2.0加密,Apache Commons ...

Global site tag (gtag.js) - Google Analytics