版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第五章 流和文件处理2本章重点1.流的概念2.InputStream和OutputStream3.文件输入输出流类4.数据输入输出流类35.1 Java中的流n数据源和数据宿之间有序运动的数据序列.n数据流分为输入数据流和输出数据流.n流式输入输出的特点是数据的获取和发送沿数据序列的顺序进行.数据发送端数据发送端 (生产者)(生产者)数据接收端数据接收端 (消费者)(消费者)缓冲区缓冲区缓冲区缓冲区流的数据传送流的数据传送45.1 Java中的流55.1 Java中的流java.lang.ObjectOutputStreamReaderWriterFileRandomAccessFileIn
2、putStream65.1 Java中的流n输入流的继承关系InputStreamFileInputStreamByteArrayInputStreamObjectInputStreamFilterInputStreamDataInputStreamPipedInputStreamSequenceInputStreamPushbackInputStreamBufferedInputStream75.1 Java中的流n输出流的继承关系OutputStreamFileOutputStreamByteArrayOutputStreamObjectOutputStreamFilterOutputSt
3、reamDataOutputStreamPipedOutputStreamSequenceOutputStreamPushbackOutputStreamBufferedOutputStream8nPrintStreamnprint()nprintln()nwrite()5.2 打印流95.2 打印流nSystem.in对象 System.in是InputStream类的对象,调用System.in.read()方法就可以实现标准输入的读操作. nSystem.out对象 System.out是PrintStream类的对象,PrintStream类是FilterOutputStream类的子
4、类,其中定义了可输出多种不同类型数据的方法print()和println()方法.105.3 系统属性nSystem类ngetProperty()nsetProperties()nread()nreadLine()115.4 输入和输出流nInputStream类npublic abstract int read( ) throws IOException:从输入流的当前位置读取一个字节的数据,并返回一int型值,如果当前位置没有数据则返回-1.npublic int read(byte b):该方法从输入流的当前位置开始读取多个字节,并将它们保存到字节数组b中,同时返回所读到的字节数,如果当
5、前位置没有数据则返回-1.npublic int read(byte b , int off , int len):该方法从输入流的当前位置读取指定个数(len)的字节,并将读取的字节保存到字节数组b中,并且要从数组b指定索引(off)位置开始起,同时返回所读到的字节数,如果当前位置没有数据则返回-1.npublic int available( ):返回输入流中可以读取的字节数.npublic void close( ):关闭输入流,并释放流占用的系统资源.125.4 输入和输出流nOutputStream类npublic void write(int b):将int型变量b的低字节写入到数
6、据流的当前位置.npublic void write(byte b):将字节数组b的b.length个字节写入到数据流的当前位置.npublic void write(byte b, int off , int len):将字节数组b由下标off开始,长度为len的字节数据写到输出流.npublic void flush( ):将缓冲区中的数据写到外设并清空缓冲区.npublic void close( ):关闭输出流并释放输出流占用的资源. 135.4 输入和输出流nInputStream类和类和OutputStream类的常用子类类的常用子类nFileInputStream类和FileOu
7、tputStream类:负责从本地文件的读写数据.nFilterInputStream类和FilterOutputStream类:过滤输入输出流,主要能够对输入输出的数据作类型或格式上的转换,实现了对二进制字节的编码转换,而它又进一步派生出一些具体的子类,如:DataInputStream、DataOutputStream和BufferedInputStream、BufferedOutputStream等.nByteArrayInputStream类和ByteArrayOutputStream类:用于进行内存数据的输入和输出。145.5 文件和目录nFile类npublic File(Stri
8、ng pathname)创建一个对应于参数pathname的File类对象.参数pathname是包含目录和文件名的字符串.如果没有文件名,则代表目录.例如,File file1=new File(d:javapjmyinput);File file2=new File(d:javapjmyinputmysys.java);155.5 文件和目录npublic File(String parent, String child)该构造函数将pathname分成两部分parent和child,参数parent表示目录或文件所在路径,参数child表示目录或文件名称.例如,File file1=ne
9、w File(d:javapj , myinput);File file2=new File(d:javapjmyinput,mysys.java);165.5 文件和目录npublic File(File parent, String child) 该构造函数与上面一个的不同之处,在于将parent的参数类型由String变为File,代表parent是一个已经创建了的File类文件对象(指向目录).例如,File file1=new File(d:javapjmyinput); File file2=new File(file1, mysys.java);175.5 文件和目录nFile类
10、的方法ngetName():获得指定文件的名称ngetPath()/getAbsolutePath()nexists():判断文件是否存在nisFile()/isDiectory()ncanRead()/canWrite()nlastModified()nlength()ndelete()185.5 文件和目录例例1使用使用File类管理文件和目录类管理文件和目录import java.io.*;public class File1 public static void main(String args)File f=new File(“c:abc.txt”);if(f.exists() )
11、System.out.println(存在!);elsetryf.createNewFile();System.out.println(“文件已被创建!”;catch(IOException e) 195.5 文件和目录例例2使用使用File类获得文件属性类获得文件属性import java.io.*;public class File2 public static void main(String args)File f=new File(I:code5q.txt);System.out.println(f.isFile();System.out.println(f.getName();Sy
12、stem.out.println(f.getPath();205.5 文件和目录n练习在D盘上创建一个简单的文本文件,名为dummy.txt. 编写程序,要求输出该文件的名称、路径、字节数。215.6 文件输入输出流nFileInputStream类nFileInputStream(String filepath)nFileInputStream(File fileobj)例如,FileInputStream f1=new FileInputStream(“C:/jdk1.4.2/bin/ex27.java”);File f=new File(“C:/jdk1.4.2/bin/ex27.jav
13、a”);FileInputStream f1=new FileInputStream(f);225.6 文件输入输出流例例3 读取文件内容并显示读取文件内容并显示import java.io.*;public class FileIn public static void main(String args) throws ExceptionFile f=new File(I:code5q.txt);FileInputStream fis = new FileInputStream( I:code5q.txt);System.out.print( content of text is : );i
14、nt b;while( (b=fis.read()!=-1 )System.out.print( (char)b ); 235.6 文件输入输出流nFileOutputStream类nFileOutputStream(String filePath)nFileOutputStream(File fileObj)nFileOutputStream(File fileObj,boolean b)245.6 文件输入输出流例例4 将程序结果追加至指定文件将程序结果追加至指定文件import java.io.*;public class File4public static void main(Str
15、ing args) throws ExceptionFile f=new File(q.txt);FileOutputStream fos=new FileOutputStream(f,true);for(int i=a;i0) this.sno=sno;=name;this.age=age;this.grade=grade;this.sex=sex;295.7 数据输入输出流import java.io.*;public class fdsRW public static void main(String args)String file=student.dat;Stude
16、nt s1=new Student();Student s2=new Student(10,张飞,16,A,true);tryFileOutputStream fo=new FileOutputStream(file); /创建文件输出流对象DataOutputStream out=new DataOutputStream(fo); /创建数据输出流对象out.writeInt(s1.sno);/写文件out.writeUTF();out.writeInt(s1.age);out.writeChar(s1.grade);out.writeBoolean(s1.sex);305.7
17、 数据输入输出流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(开始读取文件内容:);FileInputStream fi=new FileInputStream(file);/创建文件输入流对象DataInputStream in=n
18、ew DataInputStream(fi); /创建数据输入流对象315.7 数据输入输出流for(int i=1;i=2;i+)/读取文件内容int sno=in.readInt();String sname=in.readUTF();int age=in.readInt();char grade=in.readChar();boolean sex=in.readBoolean();System.out.println(sno+t+sname+t+age+t+grade+t+sex);in.close();fi.close();catch(IOException e) System.out
19、.println(e.toString(); 325.8 过滤流1.过滤流:将一个过滤流连接到另一个流上,则过滤流:将一个过滤流连接到另一个流上,则在从原始的流读写数据的同时,利用过滤流可以在从原始的流读写数据的同时,利用过滤流可以对这些数据进行加工处理。对这些数据进行加工处理。2.DataInputStream 和和DataOutputStream类:类:它们分别为它们分别为FilterInputStream和和FilterOutputStream类的子类。同时类的子类。同时DataInputStream 和和DataOutputStream类由类由于分别实现了于分别实现了DataInput
20、和和DataOutput接口中定接口中定义的独立于具体机器的带格式的读写操作,从而义的独立于具体机器的带格式的读写操作,从而可以实现对可以实现对Java中的不同类型的基本类型数据的中的不同类型的基本类型数据的读写。读写。33import java.ioimport java.io. .* *; ;public class JavaFilepublic class JavaFile public static void main(String argspublic static void main(String args) intint X=100; float Y=3.14f; X=100;
21、float Y=3.14f;trytry FileOutputStream fos=new FileOutputStream(data.datFileOutputStream fos=new FileOutputStream(data.dat););DataOutputStream dos=new DataOutputStream(fosDataOutputStream dos=new DataOutputStream(fos););dos.writeInt(Xdos.writeInt(X););dos.writeFloat(Ydos.writeFloat(Y););dos.close();d
22、os.close(); catch(FileNotFoundExceptioncatch(FileNotFoundException e) e) catch(IOExceptioncatch(IOException e) e) 带格式的写操作带格式的写操作5.8 过滤流34import java.ioimport java.io. .* *; ;public class JavaFilepublic class JavaFile public static void main(String argspublic static void main(String args) intint X; X
23、; float Y;float Y;trytry FileInputStream fis=new FileInputStream(data.dat FileInputStream fis=new FileInputStream(data.dat);); DataInputStream dis=new DataInputStream(fis DataInputStream dis=new DataInputStream(fis););X=dis.readIntX=dis.readInt();();Y=dis.readFloatY=dis.readFloat();();dis.close();dis.close();System.out.println(XSystem.out.println(X=+X);=+X);System.out.println(YSystem.out.println(Y=+Y);=+Y); catch(FileNotFoundExceptioncatch(FileNotFoundException e) e) catch(IOExceptioncatch(IOException e) e) 带格式的读操作带格式的读操作5.8 过滤流35nBufferedInputStreamnBuf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水利工程主要施工机械设备使用计划
- 生活垃圾分类测试题库及答案
- 车险名单管理培训
- 车队安全行驶培训课件
- 车队安全意识培训课件
- 湖二师汉语言文学转专业笔试试题
- 车间降本增效培训
- 酒店客房钥匙卡使用指导制度
- 京东店铺精细化运营与品类排名提升工作心得(3篇)
- 车间级安全培训内容课件
- “青苗筑基 浙里建证”浙江省建设投资集团2026届管培生招聘30人备考核心题库及答案解析
- 江苏百校大联考2026届高三语文第一学期期末学业质量监测试题含解析
- 代还按揭协议书
- 广西2025年高等职业教育考试全区模拟测试 能源动力与材料 大类试题及逐题答案解说
- 2026江苏省公务员考试公安机关公务员(人民警察)历年真题汇编附答案解析
- 2026年失眠患者睡眠调理指南
- 2026年盘锦职业技术学院单招职业适应性测试题库及答案详解一套
- 2025年10月自考00610高级日语(二)试题及答案
- 2026年包头铁道职业技术学院单招职业技能考试题库带答案解析
- 循证护理在基础护理中的应用
- 复旦大学招生面试常见问题及回答要点
评论
0/150
提交评论