关于FileInputStream中的一个read()方法

qq_40629842 2018-04-24 08:36:17
想搞一下压缩和解压缩的进度显示,这是书上的代码,我稍微改了一下,FileInputStream里面有一个read()方法,通过输入流读取文件返回的数据类型是int,这里不太明白。而我通过length()方法返回的是文件的字节长度,怎么解决呢
package csy;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class csyFileTest{
public csyFileTest(String zipFileName,File file)throws Exception{
System.out.println("压缩中");
zip(zipFileName,file);
System.out.println("length:"+new File(zipFileName).length());
}
private void zip(String zipFileName,File file)throws Exception{//zipFileName:压缩文件存放路径 file:未压缩文件
FileOutputStream outputStream=new FileOutputStream(zipFileName);
ZipOutputStream out=new ZipOutputStream(outputStream);//定义一个压缩文件流,将压缩文件流输入此录入点
zip(out,file,"");
out.close();
outputStream.close();
}
private void zip(ZipOutputStream out,File file,String base)throws Exception{

if(file.isDirectory()){//如果该文件是一个目录

File[] f=file.listFiles();//将该文件目录下的所有文件及目录存入f数组当中
if(base.length()!=0){//若目录路径不为空
out.putNextEntry(new ZipEntry(base+"/"));//新建一个目录进入点,将压缩流对应此录入点
for(int i=0;i<f.length;i++){
zip(out,f[i],f[i].getPath());//将当前文件目录路径下所有的文件及目录进行遍历
}
}else{
for(int i=0;i<f.length;i++){
zip(out,f[i],base+f[i]);//将当前文件目录路径下所有的文件及目录进行遍历
}
}
}else{//如果该文件是一个文件而不是目录
out.putNextEntry(new ZipEntry(base));
System.out.println(base);
FileInputStream in=new FileInputStream(file);//新建一个输入文件流
int b=0;
while((b=in.read())!=-1){//读取当前文件中的字节数据直至流末尾
out.write(b);//将字节数据写入输出流
}
in.close();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
csyFileTest test=new csyFileTest("D://csy.zip",new File("D:/csy"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("压缩完成");
}

}
...全文
1161 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
大寒Num1 2019-01-17
  • 打赏
  • 举报
回复
Java中volatile关键字 https://www.jianshu.com/p/d5323deb04db

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧