zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java实现文件读写与压缩实例

JAVA实例文件 实现 读写 压缩
2023-06-13 09:15:39 时间

本文通过实例讲述了Java对文件读写与压缩的实现方法,具体代码如下:

packagecom.toone.iform.action.common;

importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.Enumeration;
importjava.util.Random;
importjava.util.zip.ZipEntry;
importjava.util.zip.ZipException;
importjava.util.zip.ZipFile;
publicclassTestFileIO{
staticStrings=File.separator;

privatestaticvoidtestInput(){
//D盘下有个Welcome.java文件,现在按字节读入:
inta=0;
//intcounter=0;
FileInputStreamf11;
//输入流
try{
f11=newFileInputStream("D:"+s+"Welcome.java");
while((a=f11.read())!=-1)
System.out.print((char)a);//这里是按字节输出,中文字符无法正常输出,因为一个中文字符时两个字节。
System.out.println("\n\n--------------------------------------------------\n");

FileReaderf12=newFileReader("D:"+s+"Welcome.java");
while((a=f12.read())!=-1)
System.out.print((char)a);//这里是按字符输出,中文字符都可以正常输出
System.out.println("\n\n--------------------------------------------------\n");

f11.close();//读完之后要关闭文件
f12.close();//读完之后要关闭文件
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

privatestaticvoidtestOutput(){
//D盘下有个Welcome.java文件,现在按字节读入:
inta=0;
//输出流
Filef21=newFile("D:"+s+"testFile"+s+"test1.txt");
//定义一个新的文件f21,然后判断在这一目录下是否存在,如果不存在,则创建之。
if(!f21.exists()){
f21.getParentFile().mkdirs();
try{
f21.createNewFile();
//将“Welcome.java”的内容复制到f21
FileOutputStreamfos=newFileOutputStream(f21);
FileInputStreamfis=newFileInputStream("D:"+s+"Welcome.java");//读入“Welcome.java”文件
while((a=fis.read())!=-1)
fos.write(a);//将读入的内存写到fos中,现在得到的test1.txt就是复制Welcome.java的
//writer类
FileWriterf22=newFileWriter("D:"+s+"testFile"+s+"test2.txt");
for(inti=0;i<65535;i++)
f22.write(i);//写入到test2.txt中。由这里也可以看出,上面35-38行判断文件是否存在的语句也可以不要。
//向文件中写入字符串
FileWriterf23=newFileWriter("D:"+s+"testFile"+s+"test3.txt");
f23.write("Hello,world!");

fos.close();
fis.close();
f22.close();
f23.close();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}

privatestaticvoidtestBufferring(){
//D盘下有个Welcome.java文件,现在按字节读入:
inta=0,counter=0;
//缓冲字符,实现高效写入
//BufferedWriterf31=newBufferedWriter(newFileWriter("D"+s+"testFile"+s+"test4.txt"));
BufferedWriterf31;
try{
f31=newBufferedWriter(newFileWriter("D:"+s+"testFile"+s
+"test4.txt"));
for(inti=1;i<=100;i++){
f31.write(String.valueOf(newRandom().nextInt(100))+"");
if(i%10==0)
f31.newLine();
}
f31.flush();//刷新缓冲
f31.close();

BufferedReaderf32=newBufferedReader(newFileReader("D:"+s
+"testFile"+s+"test4.txt"));
Strings32;
System.out.println("输出文件f32的内容:");
while((s32=f32.readLine())!=null)
System.out.println(s32);
f32.close();
System.out.println("\n--------------------------------------------------\n");
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

privatestaticvoidtestZip(){
try{
Filef1=newFile("D:/test.zip");
Filef2=newFile("D:/testFile/testzip");
ZipFilezf=newZipFile(f1);
testZipToUnzip(zf,f2);

}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

//将压缩包zipfile解压到file中
publicstaticvoidtestZipToUnzip(ZipFilezipfile,Filefile){
ZipEntryzentry=null;
Filezipout;
InputStreamzis=null;
FileOutputStreamfos=null;
Enumeratione=zipfile.entries();//zipfile的目录
while(e.hasMoreElements()){
zentry=(ZipEntry)e.nextElement();
System.out.println(zentry.getName());//zipfile下有哪些文件?可是为什么不按顺序输出??
//将解压后的文件放到file文件夹下:
zipout=newFile(file+s+zentry.getName());

if(!zentry.isDirectory()){
try{
zis=zipfile.getInputStream(zentry);
if(!zipout.exists())
zipout.getParentFile().mkdirs();
fos=newFileOutputStream(zipout);
byte[]b=newbyte[1024];
intlength;
while((length=zis.read(b))>0){
fos.write(b,0,length);
}
fos.close();
zis.close();
}catch(ZipExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}catch(IOExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}
}
}

publicstaticvoidmain(String[]args)throwsZipException{
//TODOAuto-generatedmethodstub
testInput();
testOutput();
testBufferring();
testZip();
}
}