流和文件处理ppt_第1页
流和文件处理ppt_第2页
流和文件处理ppt_第3页
流和文件处理ppt_第4页
流和文件处理ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章 流和文件处理1本章重点流的概念InputStream和OutputStream文件输入输出流类数据输入输出流类25.1Java中的流数据源和数据宿之间有序运动的数据序列.数据流分为输入数据流和输出数据流.流式输入输出的特点是数据的获取和发送沿数据序列的顺序进行.数据发送端(生产者)数据接收端(消费者)缓冲区缓冲区流的数据传送35.1Java中的流45.1Java中的流java.lang.ObjectOutputStreamReaderWriterFileRandomAccessFileInputStream5字节流:从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。字符流:从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位。61、输入流的继承关系InputStreamFileInputStreamByteArrayInputStreamObjectInputStreamFilterInputStreamDataInputStreamPipedInputStreamSequenceInputStreamPushbackInputStreamBufferedInputStream72、输出流的继承关系OutputStreamFileOutputStreamByteArrayOutputStreamObjectOutputStreamFilterOutputStreamDataOutputStreamPipedOutputStreamSequenceOutputStreamPrintStreamBufferedOutputStream8PrintStreamprint()println()write()5.2打印流95.2打印流System.in对象 System.in是InputStream类的对象,调用System.in.read()方法就可以实现标准输入的读操作.System.out对象 System.out是PrintStream类的对象,PrintStream类是FilterOutputStream类的子类,其中定义了可输出多种不同类型数据的方法print()和println()方法.105.3系统属性System类getProperty()setProperties()read()readLine()11例importjava.io.*;publicclassex22{ publicstaticvoidmain(Stringarg[])throwsIOException { charc; System.out.println("entercharacters,qtoquit."); do{ c=(char)System.in.read(); System.out.println(c); }while(c!='q'); }}12importjava.io.*;public

classex23{@SuppressWarnings("deprecation")public

static

voidmain(String[]args)throwsIOException{DataInputStreamin=newDataInputStream(System.in);Stringstr;System.out.println("Enterlinesoftext");System.out.println("Enter'End'ofquit");do{str=in.readLine();System.out.println(str);}while(!str.equals("End"));}}135.4输入和输出流InputStream类publicabstractintread()throwsIOException:从输入流的当前位置读取一个字节的数据,并返回一int型值,如果当前位置没有数据则返回-1. publicintread(byte[]b):该方法从输入流的当前位置开始读取多个字节,并将它们保存到字节数组b中,同时返回所读到的字节数,如果当前位置没有数据则返回-1. publicintread(byte[]b,intoff,intlen):该方法从输入流的当前位置读取指定个数(len)的字节,并将读取的字节写入到off位置起的字节数组b中,,同时返回所读到的字节数,如果当前位置没有数据则返回-1. publicintavailable():返回输入流中可以读取的字节数. publicvoidclose():关闭输入流,并释放流占用的系统资源.14importjava.io.*;public

classex22{ public

static

voidmain(Stringarg[])throwsIOException{ bytec[]=new

byte[10]; System.out.println("enter10characters."); intp=System.in.read(c,5,5); Stringff=newString(c); System.out.println(ff); System.out.println(p); }}155.4输入和输出流OutputStream类publicvoidwrite(intb):将int型变量b的低字节写入到数据流的当前位置. publicvoidwrite(byte[]b):将字节数组b的b.length个字节写入到数据流的当前位置. publicvoidwrite(byte[]b,intoff,intlen):将字节数组b由下标off开始,长度为len的字节数据写到输出流. publicvoidflush():将缓冲区中的数据写到外设并清空缓冲区. publicvoidclose():关闭输出流并释放输出流占用的资源.165.4输入和输出流InputStream类和OutputStream类的常用子类 FileInputStream类和FileOutputStream类:负责从本地文件的读写数据. FilterInputStream类和FilterOutputStream类:过滤输入输出流,主要能够对输入输出的数据作类型或格式上的转换,实现了对二进制字节的编码转换,而它又进一步派生出一些具体的子类,如:DataInputStream、DataOutputStream和BufferedInputStream、BufferedOutputStream等. ByteArrayInputStream类和ByteArrayOutputStream类:用于进行内存数据的输入和输出。175.5文件和目录File类publicFile(Stringpathname)创建一个对应于参数pathname的File类对象.参数pathname是包含目录和文件名的字符串.如果没有文件名,则代表目录.例如, Filefile1=newFile("d:\\javapj\\myinput"); Filefile2=newFile("d:\\javapj\\myinput\\mysys.java");185.5文件和目录publicFile(Stringparent,Stringchild)

该构造函数将pathname分成两部分parent和child,参数parent表示目录或文件所在路径,参数child表示目录或文件名称.例如, Filefile1=newFile("d:\\javapj","myinput"); Filefile2=newFile("d:\\javapj\\myinput","mysys.java");195.5文件和目录publicFile(Fileparent,Stringchild)该构造函数与上面一个的不同之处,在于将parent的参数类型由String变为File,代表parent是一个已经创建了的File类文件对象(指向目录).例如, Filefile1=newFile("d:\\javapj\\myinput");Filefile2=newFile(file1,"mysys.java");205.5文件和目录File类的方法getName():获得指定文件的名称getPath()/getAbsolutePath()exists():判断文件是否存在isFile()/isDiectory()canRead()/canWrite()lastModified()length()delete()createNewFile()mkdir()mkdirs()215.5文件和目录例1使用File类管理文件和目录importjava.io.*;public

classfile1{public

static

voidmain(String[]args){Filef=newFile("c:\\abc.txt");if(f.exists()){System.out.println("存在!");}else{try{f.createNewFile();System.out.println("文件已被创建!"); }catch(IOExceptione){}}}}225.5文件和目录例2使用File类获得文件属性importjava.io.*;publicclassFile2{ publicstaticvoidmain(String[]args) { Filef=newFile("I:\\code\\5\\q.txt"); System.out.println(f.isFile()); System.out.println(f.getName()); System.out.println(f.getPath()); }} 235.5文件和目录练习 在D盘上创建一个简单的文本文件,名为dummy.txt.编写程序,要求输出该文件的名称、路径、字节数。245.6文件输入输出流FileInputStream类FileInputStream(Stringfilepath)FileInputStream(Filefileobj)例如,FileInputStreamf1=newFileInputStream(“C:/jdk1.4.2/bin/ex27.java”);Filef=newFile(“C:/jdk1.4.2/bin/ex27.java”);FileInputStreamf1=newFileInputStream(f);255.6文件输入输出流例3读取文件内容并显示importjava.io.*;publicclassFileIn{ publicstaticvoidmain(String[]args)throwsException { Filef=newFile("I:\\code\\5\\q.txt"); FileInputStreamfis=newFileInputStream("I:\\code\\5\\q.txt"); System.out.print("contentoftextis:"); intb; while((b=fis.read())!=-1) { System.out.print((char)b); }}}265.6文件输入输出流FileOutputStream类FileOutputStream(StringfilePath)FileOutputStream(FilefileObj)FileOutputStream(FilefileObj,booleanb)275.6文件输入输出流例4将程序结果追加至指定文件importjava.io.*;publicclassFile4{ publicstaticvoidmain(String[]args)throwsException { Filef=newFile("q.txt"); FileOutputStreamfos=newFileOutputStream(f,true); for(inti='a';i<='z';i++) { fos.write(i); } fos.close(); }}285.6文件输入输出流思考:如何使用FileInputStream类与FileOutputStream类复制文件295.7数据输入输出流DataInputStream和DataOutputStream分别实现了java.io包中的DataInput和DataOutput接口,能够读写Java基本数据类型的数据和Unicode编码格式的字符串.这样,在输入输出数据时就不必关心该数据究竟包含几个字节了. DataInputStream类和DataOutputStream类是从过滤流类继承过来,这两个流的对象均不能独立地实现数据的输入和输出处理,必须与其他输入流与输出流对象一起使用,才能实现不同类型数据的读写.305.7数据输入输出流315.7数据输入输出流例使用DataInputStream类和DataOutputStream类读写格式文件.classStudent{ intsno;Stringname;intage;chargrade;booleansex; publicStudent() { this.sno=0; ="未知"; this.age=0; this.grade='C'; this.sex=true; } publicStudent(intsno,Stringname,intage,chargrade,booleansex) { if(sno>0)this.sno=sno; =name; this.age=age; this.grade=grade; this.sex=sex; }}325.7数据输入输出流importjava.io.*;publicclassfdsRW{ publicstaticvoidmain(String[]args) { Stringfile="student.dat"; Students1=newStudent(); Students2=newStudent(10,"张飞",16,'A',true); try { FileOutputStreamfo=newFileOutputStream(file); //创建文件输出流对象 DataOutputStreamout=newDataOutputStream(fo); //创建数据输出流对象 out.writeInt(s1.sno); //写文件 out.writeUTF(); out.writeInt(s1.age); out.writeChar(s1.grade); out.writeBoolean(s1.sex);335.7数据输入输出流 out.writeInt(s2.sno); out.writeUTF(); out.writeInt(s2.age); out.writeChar(s2.grade); out.writeBoolean(s2.sex); out.close(); //关闭数据输出流 fo.close(); //关闭文件输出流 System.out.println("文件:"+file+"创建完毕!"); System.out.println("开始读取文件内容:"); FileInputStreamfi=newFileInputStream(file); //创建文件输入流对象 DataInputStreamin=newDataInputStream(fi); //创建数据输入流对象345.7数据输入输出流 for(inti=1;i<=2;i++) {//读取文件内容 intsno=in.readInt(); Stringsname=in.readUTF(); intage=in.readInt(); chargrade=in.readChar(); booleansex=in.readBoolean(); System.out.println(sno+"\t"+sname+"\t"+age+"\t"+grade+"\t"+sex); } in.close(); fi.close(); } catch(IOExceptione) { System.out.println(e.toString()); } }}355.8过滤流

1.过滤流:将一个过滤流连接到另一个流上,则在从原始的流读写数据的同时,利用过滤流可以对这些数据进行加工处理。2.DataInputStream和DataOutputStream类:它们分别为FilterInputStream和FilterOutputStream类的子类。同时DataInputStream和DataOutputStream类由于分别实现了DataInput和DataOutput接口中定义的独立于具体机器的带格式的读写操作,从而可以实现对Java中的不同类型的基本类型数据的读写。36importjava.io.*;publicclassJavaFile{ publicstaticvoidmain(Stringargs[]) { intX=100;floatY=3.14f; try { FileOutputStreamfos=newFileOutputStream("data.dat"); DataOutputStreamdos=newDataOutputStream(fos); dos.writeInt(X); dos.writeFloat(Y); dos.close(); } catch(FileNotFoundExceptione){ } catch(IOExceptione){ }}}带格式的写操作5.8过滤流37importjava.io.*;publicclassJavaFile{ publicstaticvoidmain(Stringargs[]) { intX; floatY;try{FileInputStreamfis=newFileInputStream("data.dat");DataInputStreamdis=newDataInputStream(fis); X=dis.readInt(); Y=dis.readFloat(); dis.close(); System.out.println("X="+X); Sy

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论