java实现文件读写与压缩实例
本文通过实例讲述了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(); } }