首页上一页 1  下一页尾页 6 条记录 1/1页
        JAVA 从入门到精通 第三版  282页 例15.8 程序出错 ,勘误之后程序还是出错,求编书人员能不能用点心!!!
                 	
                        发表在Java图书答疑
                        2015-09-10                                                
                    		
                                                                            	
                        
                        
                    
                    
                    	是否精华
                    	是
                    	否
                    
                    
                    
                            版块置顶:
                            是
                            否
                        
                    
                        设置时间:
                        非永久
                        永久            
                    
                    
                           起始时间:
                           结束时间:
                        
                    
                        是否扣分:
                        是
                        否
                    
                    
                    
                    
                
                                           282 例15.8 解压缩问题, 根据你们的勘误信息  改完程序之后,还是出错,你们解压的  压缩文件,解压之后 不是我所要的文件,而是以文件命名的文件夹。   例如: 我有个压缩文件叫 hello.zip  里面有两文件 分别是 1.txt 和 2.txt 。  用你们程序进行解压  得到:  一个文件夹 :hell   然后打开hello 文件夹  里面出现的不是 我想要的 1.txt 和 2.txt 文本文件  而是 以 1.txt 和 2.txt 命名的文件夹 。没有达到解压目的。  请你们 重视!!!!!!!!        
                
        	
        
        
    精彩评论 6
            2015-09-10
                   
                   
                   
                            
                            沙发
                        
   
                   
                                                             这段代码的确有问题,对您学习造成不正确的指引,我们深表歉意,以下提供另一版代码,可供参考:
(注意:java.util.zip包不支持解压中文名称文件)
import java.io.*;
import java.util.zip.*;
public class Decompressing { // 创建文件
public static void main(String[] temp) {
File file = new File("hello.zip");// 当前压缩文件
ZipInputStream zin; // 创建ZipInputStream对象
try { // try语句捕获可能发生的异常
ZipFile zipFile = new ZipFile(file);// 创建压缩文件对象
zin = new ZipInputStream(new FileInputStream(file));// 实例化对象,指明要进行解压的文件
ZipEntry entry = zin.getNextEntry(); // 跳过根目录,获取下一个ZipEntry
while (((entry = zin.getNextEntry()) != null)
&& !entry.isDirectory()) {// 如果entry不为空,并不在同一目录下
File tmp = new File("C:\\"+entry.getName()); // 解压出的文件路径
if (!tmp.exists()) { // 如果该文件不存在
tmp.getParentFile().mkdirs();// 创建文件父类文件夹路径
OutputStream os = new FileOutputStream(tmp);// 将文件目录中的文件放入输出流
InputStream in = zipFile.getInputStream(entry);// 用输入流读取压缩文件中制定目录中的文件
int count = 0;// 创建临时变量
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
os.close();// 关闭输出流
in.close();// 关闭输入流
}
zin.closeEntry(); // 关闭当前entry
System.out.println(entry.getName() + "解压成功");
}
zin.close(); // 关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
}
                
            (注意:java.util.zip包不支持解压中文名称文件)
import java.io.*;
import java.util.zip.*;
public class Decompressing { // 创建文件
public static void main(String[] temp) {
File file = new File("hello.zip");// 当前压缩文件
ZipInputStream zin; // 创建ZipInputStream对象
try { // try语句捕获可能发生的异常
ZipFile zipFile = new ZipFile(file);// 创建压缩文件对象
zin = new ZipInputStream(new FileInputStream(file));// 实例化对象,指明要进行解压的文件
ZipEntry entry = zin.getNextEntry(); // 跳过根目录,获取下一个ZipEntry
while (((entry = zin.getNextEntry()) != null)
&& !entry.isDirectory()) {// 如果entry不为空,并不在同一目录下
File tmp = new File("C:\\"+entry.getName()); // 解压出的文件路径
if (!tmp.exists()) { // 如果该文件不存在
tmp.getParentFile().mkdirs();// 创建文件父类文件夹路径
OutputStream os = new FileOutputStream(tmp);// 将文件目录中的文件放入输出流
InputStream in = zipFile.getInputStream(entry);// 用输入流读取压缩文件中制定目录中的文件
int count = 0;// 创建临时变量
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
os.close();// 关闭输出流
in.close();// 关闭输入流
}
zin.closeEntry(); // 关闭当前entry
System.out.println(entry.getName() + "解压成功");
}
zin.close(); // 关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
}
2015-09-10
                   
                   
                   
                           
                           地板
                        
   
                   
                                                             [FIELDSET][LEGEND]引自:1楼[/LEGEND]
这段代码的确有问题,对您学习造成不正确的指引,我们深表歉意,以下提供另一版代码,可供参考:
(注意:java.util.zip包不支持解压中文名称文件)
import java.io.*;
import java.util.zip.*;
public class Decompressing { // 创建文件
public static void main(String[] temp) {
File file = new File("hello.zip");// 当前压缩文件
ZipInputStream zin; // 创建ZipInputStream对象
try { // try语句捕获可能发生的异常
ZipFile zipFile = new ZipFile(file);// 创建压缩文件对象
zin = new ZipInputStream(new FileInputStream(file));// 实例化对象,指明要进行解压的文件
ZipEntry entry = zin.getNextEntry(); // 跳过根目录,获取下一个ZipEntry
while (((entry = zin.getNextEntry()) != null)
&& !entry.isDirectory()) {// 如果entry不为空,并不在同一目录下
File tmp = new File("C:\\"+entry.getName()); // 解压出的文件路径
if (!tmp.exists()) { // 如果该文件不存在
tmp.getParentFile().mkdirs();// 创建文件父类文件夹路径
OutputStream os = new FileOutputStream(tmp);// 将文件目录中的文件放入输出流
InputStream in = zipFile.getInputStream(entry);// 用输入流读取压缩文件中制定目录中的文件
int count = 0;// 创建临时变量
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
os.close();// 关闭输出流
in.close();// 关闭输入流
}
zin.closeEntry(); // 关闭当前entry
System.out.println(entry.getName() + "解压成功");
}
zin.close(); // 关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/FIELDSET]
回复:你好 大神 你看看 这段程序 貌似没什么多大的意义啊!!
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
                      
                
                
            这段代码的确有问题,对您学习造成不正确的指引,我们深表歉意,以下提供另一版代码,可供参考:
(注意:java.util.zip包不支持解压中文名称文件)
import java.io.*;
import java.util.zip.*;
public class Decompressing { // 创建文件
public static void main(String[] temp) {
File file = new File("hello.zip");// 当前压缩文件
ZipInputStream zin; // 创建ZipInputStream对象
try { // try语句捕获可能发生的异常
ZipFile zipFile = new ZipFile(file);// 创建压缩文件对象
zin = new ZipInputStream(new FileInputStream(file));// 实例化对象,指明要进行解压的文件
ZipEntry entry = zin.getNextEntry(); // 跳过根目录,获取下一个ZipEntry
while (((entry = zin.getNextEntry()) != null)
&& !entry.isDirectory()) {// 如果entry不为空,并不在同一目录下
File tmp = new File("C:\\"+entry.getName()); // 解压出的文件路径
if (!tmp.exists()) { // 如果该文件不存在
tmp.getParentFile().mkdirs();// 创建文件父类文件夹路径
OutputStream os = new FileOutputStream(tmp);// 将文件目录中的文件放入输出流
InputStream in = zipFile.getInputStream(entry);// 用输入流读取压缩文件中制定目录中的文件
int count = 0;// 创建临时变量
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
os.close();// 关闭输出流
in.close();// 关闭输入流
}
zin.closeEntry(); // 关闭当前entry
System.out.println(entry.getName() + "解压成功");
}
zin.close(); // 关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/FIELDSET]
回复:你好 大神 你看看 这段程序 貌似没什么多大的意义啊!!
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
2015-09-10
                   
                   
                   
                        4L
                    
   
                   
                                                             [FIELDSET][LEGEND]引自:2楼[/LEGEND]
你好 大神 你看看 这段程序 貌似没什么多大的意义啊!!
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
[/FIELDSET]
回复:
这是将压缩文件以压缩数据流的方式读出,再以普通文件数据流的方式写到硬盘上。这里的count是一个临时的缓存变量,用来保存输入流读出的字节,如果这个字节不是-1(即文件没有读取完),则将这个字节写入到文件输出流中。输入流循环的read(),输出流循环的write(),直到文件写完为止。如果不用数据流,我们无法将压缩包中的文件复制出来。
                
            你好 大神 你看看 这段程序 貌似没什么多大的意义啊!!
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
[/FIELDSET]
回复:
这是将压缩文件以压缩数据流的方式读出,再以普通文件数据流的方式写到硬盘上。这里的count是一个临时的缓存变量,用来保存输入流读出的字节,如果这个字节不是-1(即文件没有读取完),则将这个字节写入到文件输出流中。输入流循环的read(),输出流循环的write(),直到文件写完为止。如果不用数据流,我们无法将压缩包中的文件复制出来。
2015-09-10
                   
                   
                   
                        5L
                    
   
                   
                                                             [FIELDSET][LEGEND]引自:4楼[/LEGEND]
[FIELDSET][LEGEND]引自:2楼[/LEGEND]
你好 大神 你看看 这段程序 貌似没什么多大的意义啊!!
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
[/FIELDSET]
回复:
这是将压缩文件以压缩数据流的方式读出,再以普通文件数据流的方式写到硬盘上。这里的count是一个临时的缓存变量,用来保存输入流读出的字节,如果这个字节不是-1(即文件没有读取完),则将这个字节写入到文件输出流中。输入流循环的read(),输出流循环的write(),直到文件写完为止。如果不用数据流,我们无法将压缩包中的文件复制出来。
[/FIELDSET]
回复:我试了一下 没有这一句 依然能成功解压,这是为什么呢?
                      
                
                
            [FIELDSET][LEGEND]引自:2楼[/LEGEND]
你好 大神 你看看 这段程序 貌似没什么多大的意义啊!!
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
[/FIELDSET]
回复:
这是将压缩文件以压缩数据流的方式读出,再以普通文件数据流的方式写到硬盘上。这里的count是一个临时的缓存变量,用来保存输入流读出的字节,如果这个字节不是-1(即文件没有读取完),则将这个字节写入到文件输出流中。输入流循环的read(),输出流循环的write(),直到文件写完为止。如果不用数据流,我们无法将压缩包中的文件复制出来。
[/FIELDSET]
回复:我试了一下 没有这一句 依然能成功解压,这是为什么呢?
2015-09-11
                   
                   
                   
                        6L
                    
   
                   
                                                             [FIELDSET][LEGEND]引自:5楼[/LEGEND]
[FIELDSET][LEGEND]引自:4楼[/LEGEND]
[FIELDSET][LEGEND]引自:2楼[/LEGEND]
你好 大神 你看看 这段程序 貌似没什么多大的意义啊!!
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
[/FIELDSET]
回复:
这是将压缩文件以压缩数据流的方式读出,再以普通文件数据流的方式写到硬盘上。这里的count是一个临时的缓存变量,用来保存输入流读出的字节,如果这个字节不是-1(即文件没有读取完),则将这个字节写入到文件输出流中。输入流循环的read(),输出流循环的write(),直到文件写完为止。如果不用数据流,我们无法将压缩包中的文件复制出来。
[/FIELDSET]
回复:我试了一下 没有这一句 依然能成功解压,这是为什么呢?
  
[/FIELDSET]
回复:
不开启数据流,只是创建了一个同名的文件,文件里什么内容都没有
                
            [FIELDSET][LEGEND]引自:4楼[/LEGEND]
[FIELDSET][LEGEND]引自:2楼[/LEGEND]
你好 大神 你看看 这段程序 貌似没什么多大的意义啊!!
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
[/FIELDSET]
回复:
这是将压缩文件以压缩数据流的方式读出,再以普通文件数据流的方式写到硬盘上。这里的count是一个临时的缓存变量,用来保存输入流读出的字节,如果这个字节不是-1(即文件没有读取完),则将这个字节写入到文件输出流中。输入流循环的read(),输出流循环的write(),直到文件写完为止。如果不用数据流,我们无法将压缩包中的文件复制出来。
[/FIELDSET]
回复:我试了一下 没有这一句 依然能成功解压,这是为什么呢?
[/FIELDSET]
回复:
不开启数据流,只是创建了一个同名的文件,文件里什么内容都没有

 
	
                                                 VIP会员
VIP会员 购物车
购物车

 私信
                         私信 
                     发表新帖
发表新帖 立即签到
立即签到 
        		  
        		 
         		 关注
关注
                  回复
 回复 支持(
                	支持( 反对(
                    反对( 
               			  
                







 
                     
                     
					 
						 
						 
						 
						