关于IO流总结性案例.docx
- 文档编号:16358472
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:19
- 大小:20.11KB
关于IO流总结性案例.docx
《关于IO流总结性案例.docx》由会员分享,可在线阅读,更多相关《关于IO流总结性案例.docx(19页珍藏版)》请在冰点文库上搜索。
关于IO流总结性案例
案例1,FileInputStream
packageFileInputStream类;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.InputStream;
publicclassFileInputStreamDemo1{
publicstaticvoidmain(Stringargs[])throwsIOException{
FileInputStreaminputStream=null;//记住创建流的时候最好进行初始化null
Filefile=newFile("D:
\\lsc.txt");
try{
if(!
file.exists())
file.createNewFile();
inputStream=newFileInputStream(file);//创建一个连接的管道
}catch(IOExceptione){
//TODO自动生成的catch块
e.printStackTrace();
}
//将字节数组转换成字符串用到一个方法:
newString(byte[]bytes)
//通过使用平台的默认字符集解码指定的byte数组,构造一个新的String。
//一次性读取出来
byte[]b=newbyte[1024];//一个汉字包括标点符号都是表示两个字节。
不满两个字节,则会出现了?
inputStream.read(b);
Stringstring=newString(b);
System.out.println(string);
//另一种方式读取,但是读取的只能是字节字母或者是数字,无法读取汉字
intaa;
aa=inputStream.read();
while(aa!
=(-1)){
System.out.print((char)aa+"\t");
aa=inputStream.read();
}
}
}
案例2.File类
packageFile类;
/**
*File类的理解:
文件和目录路径名的抽象表示形式。
*①创建的实例的时候,只是得到了文件或目录的抽象的路径名而已,只有得到了抽象路径名才可以对相应的文件或目录进行操作。
*②若File实例的路径名没有存在,则会报错,但是仍然可以对抽象的文件目录进行相应的操作,只是不会操作不会对物理的路径有更改。
*③若File实例的路径存在,若多级目录,则需要父目录也要存在,这时,可以不进行创建文件或目录,可以直接进行对文件的操作。
操作对物理路径有效。
*③若File实例的路径不存在,需要创建文件或目录,File有相应的方法,但是要注意了,创建的时候,只是针对最后一级的目录或文件。
*若抽象路径中,前面一级的目录不存在,调用dir.createNewFile();dir.createNewFile();会提示系统找不到指定的路径。
采用下面两个方法。
*一.这时需要创建一个新的实例,将前面一级的抽象目录创建成存在的路径目录。
*二.调用方法,mkdirs(),创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
*
*/
importjava.io.File;
importjava.io.IOException;
//File类的详细用法
publicclassFileDemo{
publicstaticvoidmain(String[]args)throwsIOException{
//创建c:
\haha目录
Filedir=newFile("c:
\\test12\\cmq.mp4");//Filedir=newFile("c:
/test.txt");只是一个抽象路径名的实例而已
//这样写不具有跨平台,不同系统的分隔符是不一样的,所以用到了separator;
//推荐以下写法File(Stringpathname)通过将给定路径名字符串转换为抽象路径名来创建一个新File实例
Filedir1=newFile("d:
"+File.pathSeparator+"test.txt");//相当于"d:
\\test.txt"
dir.mkdirs();//创建目录
Filedir2=newFile(dir,"test.txt");
try
{
dir.createNewFile();//仅适用于创建文件,不适合创建目录。
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
}
catch(IOExceptionex)
{
ex.printStackTrace();
}
dir.delete();//当该目录对象为多层时,删除的是最底层目录,或文件。
System.out.println(dir.exists());
System.out.println("getTotalSpace:
"+dir.getTotalSpace());
System.out.println("系统目录之间的分隔符:
"+File.pathSeparator);
System.out.println("系统默认使用的分隔符:
"+File.separator);//记住了用这个,因为跨平台
}
}
案例3
packageFile类;
importjava.io.File;
importjava.io.IOException;
publicclassFileDemo1{
publicvoidcreateFile(Stringpath){
Filefile=newFile(path);
if(!
file.exists()){//判断文件是否存在
try{
file.createNewFile();//创建文件
}catch(IOExceptione){
e.printStackTrace();
}
}
/*获取文件名*/
Stringname=file.getName();
/*获取文件路径*/
Stringpath_=file.getPath();
/*获取绝对路径名*/
StringabsPath=file.getAbsolutePath();
/*获取父亲文件路径*/
Stringparent=file.getParent();
/*文件大小*/
longsize=file.length();
/*最后一次修改时间*/
longtime=file.lastModified();
System.out.println("文件名:
"+name);
System.out.println("文件路径:
"+path_);
System.out.println("文件的绝对路径:
"+absPath);
System.out.println("文件的父文件路径:
"+parent);
System.out.println("文件的大小:
"+size);
System.out.println("文件最后一次修改时间:
"+time);
//file.delete();//删除文件
}
publicvoidcreateDir(Stringpath){
Filefile=newFile(path);
if(!
file.exists()){
file.mkdirs();//创建文件夹
}
//file.delete();若文件夹为空,则删除文件夹
}
/**
*遍历文件夹中的文件并显示
*/
publicvoidfileTest(Stringpath){
Filefile=newFile(path);
File[]files=file.listFiles();
//System.out.println(files.length);
for(Filef:
files){
if(f.isFile()){
System.out.println(f.getName()+"是文件!
");
}elseif(f.isDirectory()){
fileTest(f.getPath());
}
}
}
publicvoidreFileName(StringfromPath,StringtoPath){
Filefile1=newFile(fromPath);
Filefile2=newFile(toPath);
/*判断file2文件夹路径存在与否,不存在则创建*/
if(!
file2.exists()){
newFile(file2.getParent()).mkdirs();
}
file1.renameTo(file2);//修改文件名
}
publicstaticvoidmain(String[]args){
//Filefile=newFile("E:
\\myjava\\1.txt");//Window路径\\
//Fileflie_=newFile("E:
/myjava","1.txt");//linux路径/
//
FileDemo1tf=newFileDemo1();
//tf.createFile("E:
\\myjava\\1.txt");
//tf.fileTest("E:
/wepull");
//tf.createDir("e:
/sunxiao/abc/1.txt");
//tf.reFileName("E:
\\my\\2.txt","E:
\\myjava\\1.txt");
tf.copyFlie("E:
\\myjava","F:
\\");
}
privatevoidcopyFlie(Stringsrc,Stringto){
Filefile1=newFile(src);
Stringtopath=to+"\\"+file1.getName();
Filefile2=newFile(topath);
if(!
file2.exists()){
file2.mkdirs();
}
System.out.println(topath);
File[]file=file1.listFiles();
for(Filef:
file){
if(f.isFile()){
Stringpath2=topath+"\\"+f.getName();
Creatfile(path2);
}elseif(f.isDirectory()){
Strings=f.getPath();
copyFlie(s,topath);
}
}
}
privatevoidCreatfile(Stringpath2){
Filefile3=newFile(path2);
if(!
file3.exists()){//判断文件是否存在
try{
file3.createNewFile();//创建文件
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
案例4
packageFile类;
importjava.io.File;
importjava.io.IOException;
publicclassFileDemo2{
publicstaticvoidmain(String[]args){
//创建c:
\\haha\\hehe\\test.txt文件
//1.首先创建c:
\\haha目录
//2.创建test.txt文件
//创建父目录
Fileparent=newFile("c:
"+File.separator+"haha"+File.separator+"hehe");
Filechild=newFile(parent,"test.txt");
try
{
if(!
parent.exists())//首先检查父目录是否已经存在
{
//parent.mkdir();//一次只能创建一个目录
parent.mkdirs();//一次可以创建多个目录
child.createNewFile();//创建子文件;
System.out.println("文件创建成功!
");
}
else
{
child.createNewFile();
System.out.println("文件创建成功!
");
}
}
catch(IOExceptionex)
{
ex.printStackTrace();
}
for(inti=0;i<10;i++)//休眠10秒钟
{
try
{
Thread.sleep(1000);//线程休眠1秒钟;
}
catch(Exceptionex)
{
ex.printStackTrace();
}
}
System.out.println("文件的绝对路径:
"+child.getAbsolutePath());
System.out.println("文件名:
"+child.getName());
System.out.println("文件父目录的路径:
"+child.getParent());
System.out.println("是否是目录:
"+child.isDirectory());
System.out.println("是否是文件:
"+child.isFile());
System.out.println("文件长度:
"+child.length()+"字节");
//删除文件
child.delete();
}
}
案例5压缩流跟解压缩流
packageZipOutputStream类;
importjava.io.*;
importjava.util.zip.*;
/**
*程序实现了ZIP压缩。
共分为2部分:
压缩(compression)与解压(decompression)
*
*大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。
需在代码中自定义源输入路径和目标输出路径。
*
*在本段代码中,实现的是压缩部分;解压部分见本包中Decompression部分。
*
*@authorHAN
*
*/
publicclassMyZipCompressing{
privateintk=1;//定义递归次数变量
publicMyZipCompressing(){
//TODOAuto-generatedconstructorstub
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
MyZipCompressingbook=newMyZipCompressing();
try{
book.zip("C:
/Users/Administrator/Desktop/aa.zip",newFile("C:
/Users/Administrator/Desktop/aa"));
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
privatevoidzip(StringzipFileName,FileinputFile)throwsException{
System.out.println("压缩中...");
ZipOutputStreamout=newZipOutputStream(newFileOutputStream(zipFileName));//这是一个过滤流,嵌套了一个介质流
BufferedOutputStreambufferedOutputStream=newBufferedOutputStream(out);//过滤流之间是可以相互进行嵌套的
zip(out,inputFile,inputFile.getName(),bufferedOutputStream);
bufferedOutputStream.close();
out.close();//输出流关闭
System.out.println("压缩完成");
}
privatevoidzip(ZipOutputStreamout,Filef,Stringbase,BufferedOutputStreambufferedOutputStream)throwsException{//方法重载
if(f.isDirectory()){
File[]fl=f.listFiles();
/**
*表示空目录的时候
*/
if(fl.length==0){
out.putNextEntry(newZipEntry(base+"/"));//创建zip压缩进入点base,也就是将该文件条目写入Zip格式文件中
System.out.println(base+"/");//base目录的名字
}
for(inti=0;i zip(out,fl[i],base+"/"+fl[i].getName(),bufferedOutputStream);//递归遍历子文件夹 } System.out.println("第"+k+"次递归"); k++; }else{//表示子文件夹遍历到不是文件夹而是目录的时候呢,这时候就可以进行压缩操作 //理解好下面这句话,也就是说只有将压缩文件的对象表示出来,ZipEntry。 这时候,bufferedOutputStream.write(b);才是表示对当前的流对应的文件 out.putNextEntry(newZipEntry(base));//创建zip压缩进入点base,在压缩文件中的表现形式便是ZipEntry对象 System.out.println(base); FileInputStreamin=newFileInputStream(f); BufferedInputStreambi=newBufferedInputStream(in); intb; while((b=bi.read())! =-1){ bufferedOutputStream.write(b);//将字节流表示把对应的zip文件写入当前zip目录 } bi.close(); in.close();//输入流关闭 } } } 案例 packageZipOutputStream类; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.InputStream; importjava.util.zip.ZipEntry; importjava.util.zip.ZipOutputStream; publicclassZipMultiDirectoryCompress{ publicstaticvoidmain(String[]args){ //初始化支持多级目录压缩的ZipMultiDirectoryCompress ZipMultiDirectoryCompresszipCompress=newZipMultiDirectoryCompress(); //压缩目录,可以指向一个文件 Stringdirectory="C: /Users/Administrator/Desktop/目录"; //生成的压缩文件 StringdestFile="C: /Users/Administrator/Desktop"; //默认的相对地址,为根路径 StringdefaultParentPath=""; ZipOutputStreamzos=null; try{ //创建一个Zip输出流 zos=newZipOutputStream(newFileOutputStream(destFile)); //启动压缩进程 zipCompress.startCompress(zos,defaultParentPath,directory); }catch(FileNotFoundExceptione){ e.printStackTrace(); }finally{ try{ if(zos! =null)zos.close(); }catch(IOExceptione){ e.printStackTrace(); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于 IO 总结性 案例