




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章流与文件StreamandFile计算机科学与技术学院第八章流与文件StreamandFile计算机科1.了解流、输入输出的概念2.掌握常见的输入输出流类的使用3.熟悉System类,掌握标准输入输出和重新定向输入输出技术4.掌握用I/O流实现文件读/写,压缩文件读/写的方法本节学习要点计算机科学与技术学院1.了解流、输入输出的概念本节学习要点计算机科学与技术学院2目的地:标准输出设备.如屏幕磁盘文件网络连接等8.1什么是流8.1.1基本概念输入:指的是如何从数据源中获得字节序列数据源:标准输入设备.如:键盘磁盘文件
网络连接等输出:指的是如何将字节序列发送到能接收数据的目的地计算机科学与技术学院目的地:标准输出设备.如屏幕8.1什么是流8.1.1基本3在Java中,输入流指的是能够读取一个字节序列的对象;Java的流类可分为两大部分:File类:用于文件管理I/O流类:用于文件读写8.1什么是流而输出流指的是能够写一个字节序列的对象计算机科学与技术学院在Java中,输入流指的是能够读取一个字节序4File类:封装了对文件系统进行操作的功能最后修改日期文件,目录操作等8.1什么是流I/O流类:InputStream和OutputStream是用来存取字节的所有类的根类
Reader和Writer是专门用来读写双字节Unicode的类的根类计算机科学与技术学院File类:封装了对文件系统进行操作的功能8.1什么是流I5InputStream和OutputStream只提供了读写字节的方法,要想使用各种形式的输入输出方式,必须扩展其子类Java从四个抽象类上派生了很多具体类,利用这些类,任何你能想象得到的输入输出形式都可以轻松完成8.1什么是流计算机科学与技术学院InputStream和OutputStre6API:java.io.InputStreamabstractintread()intread(byte[]b)intread(byte[]b,intoff,intlen)longskip(longn)intavailable()返回不会阻塞的实际可用字节数voidclose()8.1什么是流计算机科学与技术学院API:java.io.InputStream8.1什么是流7
voidmark(intreadlimit)在当前位置作一个标记voidreset()返回最近的标记处booleanmarkSupported()如果该流支持标记则返回true8.1什么是流计算机科学与技术学院voidmark(intreadlimit)在当前位8API:java.io.OutputStream()abstractintwrite()intwrite(byte[]b)intwrite(byte[]b,intoff,intlen)voidclose()voidflush()8.1什么是流计算机科学与技术学院API:java.io.OutputStream()8.1什98.1什么是流8.1.2System.in和System.out对象System.in和System.out是InputStream和OutputStream的一个子类的预定义对象
与之相关的方法:read()---System.in.read()print(参数)、println(参数)System.out.println(“请输入一个数据:”);System.in可以用于从键盘读入System.out可以将数据输出到显示屏计算机科学与技术学院8.1什么是流8.1.2System.in和System.10
InputStream用于读取字节数据FileInputStream用于从文件上读取字节FilterInputStream用于构成过滤器流PipedInputStream用于线程之间通信BufferedInputStream支持缓冲区输入PushbackInputStream跟踪中间流DataInputStream提供各种方式的输入形式8.2常用的流类计算机科学与技术学院InputStream用于读取字节数据FileIn118.2.1文件管理File类File类的功能十分强大,它可以访问指定文件的所有属性,包括文件名、文件长度、最后修改时间等还可以用来建立目录、删除文件等构造方法:File(Stringpath)File(Stringpath,Stringname)File(Filedir,Stringname)计算机科学与技术学院8.2.1文件管理File类File类的功能十分强大,它可12API:java.io.FileStringgetAbsolutePath()返回包含绝对路径名的字符串StringgetCanonicalPath()返回包含规范路径名的字符串StringgetName()StringgetParent()booleanisDirectory()booleanisFile()8.2.1文件管理File类计算机科学与技术学院API:java.io.FileStringgetAbso13String[]list()返回File对象下的文件名和子目录名String[]list(FilenameFilterfilter)
同上,但只有通过过滤器检查的文件和目录才能被返回booleanmkdir()URLtoURL()把File对象转化为一个URL例:打印指定路径下的子目录结构
FindDirectories.java8.2.1文件管理File类计算机科学与技术学院String[]list()返回File对象下的文件名和子148.2.1文件管理File类计算机科学与技术学院8.2.1文件管理File类计算机科学与技术学院15用于指定路径的代码:if(args.length==0)args=newString[]{".."};try{FilepathName=newFile(args[0]);String[]fileNames=pathName.list();复合成绝对路径:for(inti=0;i<fileNames.length;i++){Filef=newFile(pathName.getPath(),fileNames[i]);8.2.1文件管理File类计算机科学与技术学院用于指定路径的代码:复合成绝对路径:8.2.1文件管理Fi161.FileInputStream类构造方法:FileInputStream(Stringfilename)FileInputStream(Filefile)例:FileInputStreamin1=new
FileInputStream(“c:\1000\hello.java”);例:Filef=newFile(“myfile.dat”);FileInputStreamin2=newFileInputStream(f)用于读写磁盘文件8.2.2FileInputStream和FileOutputStream类计算机科学与技术学院1.FileInputStream类构造方法:例:Fil172.FileOutputStream类构造方法:FileOutputStream(Stringfilename)FileOutputStream(Filefile)例:Stringname=“c:\1000\line.txt”;FileOutputStreamout=newFileOutputStream(name);只能读取字节或字节数组in1、in2、out8.2.2FileInputStream和FileOutputStream类计算机科学与技术学院2.FileOutputStream类构造方法:例:Stri188.2.3.DataInputStream和DataOputStream类1.DataInputStream构造方法:DataInputStream(InputStreamin)常用方法:close()readByte()readInt()readUTF()readFloat()计算机科学与技术学院8.2.3.DataInputStream和DataOput192.DataOutputStream类构造方法:DataOutputStream(OutputStreamin)常用方法:close()writeByte()writeInt()writeUTF()writeFloat()8.2.3.DataInputStream和DataOputStream类计算机科学与技术学院2.DataOutputStream类构造方法:常用方法:8203.FileInputStream类能从文件及其它位置上读取字节,而DataIputStream类能够把字节合成为常用的数据类型。可以把两种类结合起来从而构成过滤器流例:从一个文件中读取一个数字FileInputStreamfin=new
FileInputStream(“line.txt”);DataInputstreamdin=newDataInputStream(fin);intdata1=din.readInt();过滤器8.2.3.DataInputStream和DataOputStream类计算机科学与技术学院3.FileInputStream类能从文件及其它位置上读218.2.4BufferedInputStream和BufferedInputStream类构造方法:BufferedInputStream(InputStreamin)BufferedInputStream(InputStreamin,intn)
用来创建一输入缓冲流BufferedOutputStream(OutputStreamout)BufferedOutputStream(OutputStreamout,intn)用来创建一输出缓冲流
用于从一个流中读取字符,但不会每次都导致设备访问计算机科学与技术学院8.2.4BufferedInputStream和Buff22例:利用缓冲区从文件中读取数据DataInputStreamdin=newDataInputStream(newBufferedInputStream(newFileInputStream(“line.txt”)));Voidunread(intn)回退一个字节8.2.4BufferedInputStream和BufferedInputStream类计算机科学与技术学院例:利用缓冲区从文件中读取数据Voidunread(int23构造方法:PushbackInputStream(Inputstreamin)
构造具有一个字节预先量缓冲流PushbackInputStream(Inputstreamin,intsize)
构造一个指定大小的预先缓冲的流8.2.5PushbackInputStream类用于跟踪中间流的类计算机科学与技术学院构造方法:8.2.5PushbackInputStream248.2.6RandomAccessFile类通过构造RandomAccessFile类,你可以做任何想对文件进行的操作。构造方法:RandomAccessFile(Stringfilename,Stringmode)RandomAccessFile(Filefile,Stringmode)常用方法:readwrite系列publicvoidseek(longpos)throwIOExceptionpublicintSkipBytes(intn)throwIOException计算机科学与技术学院8.2.6RandomAccessFile类258.2.7管道类PipedInputStream类创建是一个输入管道PipedOutputStream创建是一个输出管道输出管道与输入管道连接就形成了一个传输数据的通道
使用这样的管道,用户可以在不同的线程间实现数据共享计算机科学与技术学院8.2.7管道类PipedInputStream类创建是一26管道模型如图:线程1管道输出连接管道输入管道输出线程2线程3管道输入连接8.2.7管道类计算机科学与技术学院管道模型如图:线管道输出连管道输入管道输出线线管道输入连8.27构造输入输出流:PipedInputStreamin=newPipedInputStream();PipedOutputStreamout=newPipedOutputStream()1.将输入与输出连接connect(PipedOutputStreamc)
例:in.connect(out)2.将输出与输入连接connect(PipedInputStreamc)out.connect(in)8.2.7管道类计算机科学与技术学院构造输入输出流:1.将输入与输出连接2.将输出与输入连接co288.2.7管道类例:一个简单的例子PipeTest.javaProducerFilterConsumer0.01计算机科学与技术学院8.2.7管道类例:一个简单的例子PipeTest.jav298.3Readers的Writers类Readers的Writers类的出现并不是要取代InputStream和OutputStream,而是为了更好地国际化目的为了更好的搭配使用两种类,Java提供了“桥接类”:InputStreamReader和OutputStreamWriter,用于将InputStream和OutputStream转化为Reader和Writer这是两个用于Unicode并基于字符的I/O流计算机科学与技术学院8.3Readers的Writers类Readers的W30两个继承体系之间类的对应关系InputStreamOutputStreamFileInputStreamFileOutStyreamPipesInputStreamPipesOutputStreamReader转换器:InputStreamReaderWriter转换器:OutputStreamWriterFileReaderFileWriterPipedReaderPipedWriter8.3Readers的Writers类计算机科学与技术学院两个继承体系之间类的对应关系InputStreamReade31Filters:两个继承体系之间类的对应关系FilterInputStreamFilterOutputStreamBufferedInputStreamBufferedOutputStreamDataInputStreamPushBackInputStreamPrintStreamFilterReaderFilterWriterBufferedReaderBufferedWriterPushBackReaderPrintWriter8.3Readers的Writers类计算机科学与技术学院Filters:两个继承体系之间类的对应关系FilterIn32未变化的类DataOutputStreamFileRandomAccessFileSequenceInputStream8.3Readers的Writers类计算机科学与技术学院未变化的类DataOutputStream8.3Read33小结I/O类库是Java基本类库中非常重要的组成本节主要介绍了:1.流的概念2.常见的I/O流类及主要方法3.标准I/O4.File类及属性和方法5.用I/O流实现文件读写计算机科学与技术学院小结I/O类库是Java基本类库中非常重要的组成本节主要介绍34第八章流与文件StreamandFile计算机科学与技术学院第八章流与文件StreamandFile计算机科1.了解流、输入输出的概念2.掌握常见的输入输出流类的使用3.熟悉System类,掌握标准输入输出和重新定向输入输出技术4.掌握用I/O流实现文件读/写,压缩文件读/写的方法本节学习要点计算机科学与技术学院1.了解流、输入输出的概念本节学习要点计算机科学与技术学院36目的地:标准输出设备.如屏幕磁盘文件网络连接等8.1什么是流8.1.1基本概念输入:指的是如何从数据源中获得字节序列数据源:标准输入设备.如:键盘磁盘文件
网络连接等输出:指的是如何将字节序列发送到能接收数据的目的地计算机科学与技术学院目的地:标准输出设备.如屏幕8.1什么是流8.1.1基本37在Java中,输入流指的是能够读取一个字节序列的对象;Java的流类可分为两大部分:File类:用于文件管理I/O流类:用于文件读写8.1什么是流而输出流指的是能够写一个字节序列的对象计算机科学与技术学院在Java中,输入流指的是能够读取一个字节序38File类:封装了对文件系统进行操作的功能最后修改日期文件,目录操作等8.1什么是流I/O流类:InputStream和OutputStream是用来存取字节的所有类的根类
Reader和Writer是专门用来读写双字节Unicode的类的根类计算机科学与技术学院File类:封装了对文件系统进行操作的功能8.1什么是流I39InputStream和OutputStream只提供了读写字节的方法,要想使用各种形式的输入输出方式,必须扩展其子类Java从四个抽象类上派生了很多具体类,利用这些类,任何你能想象得到的输入输出形式都可以轻松完成8.1什么是流计算机科学与技术学院InputStream和OutputStre40API:java.io.InputStreamabstractintread()intread(byte[]b)intread(byte[]b,intoff,intlen)longskip(longn)intavailable()返回不会阻塞的实际可用字节数voidclose()8.1什么是流计算机科学与技术学院API:java.io.InputStream8.1什么是流41
voidmark(intreadlimit)在当前位置作一个标记voidreset()返回最近的标记处booleanmarkSupported()如果该流支持标记则返回true8.1什么是流计算机科学与技术学院voidmark(intreadlimit)在当前位42API:java.io.OutputStream()abstractintwrite()intwrite(byte[]b)intwrite(byte[]b,intoff,intlen)voidclose()voidflush()8.1什么是流计算机科学与技术学院API:java.io.OutputStream()8.1什438.1什么是流8.1.2System.in和System.out对象System.in和System.out是InputStream和OutputStream的一个子类的预定义对象
与之相关的方法:read()---System.in.read()print(参数)、println(参数)System.out.println(“请输入一个数据:”);System.in可以用于从键盘读入System.out可以将数据输出到显示屏计算机科学与技术学院8.1什么是流8.1.2System.in和System.44
InputStream用于读取字节数据FileInputStream用于从文件上读取字节FilterInputStream用于构成过滤器流PipedInputStream用于线程之间通信BufferedInputStream支持缓冲区输入PushbackInputStream跟踪中间流DataInputStream提供各种方式的输入形式8.2常用的流类计算机科学与技术学院InputStream用于读取字节数据FileIn458.2.1文件管理File类File类的功能十分强大,它可以访问指定文件的所有属性,包括文件名、文件长度、最后修改时间等还可以用来建立目录、删除文件等构造方法:File(Stringpath)File(Stringpath,Stringname)File(Filedir,Stringname)计算机科学与技术学院8.2.1文件管理File类File类的功能十分强大,它可46API:java.io.FileStringgetAbsolutePath()返回包含绝对路径名的字符串StringgetCanonicalPath()返回包含规范路径名的字符串StringgetName()StringgetParent()booleanisDirectory()booleanisFile()8.2.1文件管理File类计算机科学与技术学院API:java.io.FileStringgetAbso47String[]list()返回File对象下的文件名和子目录名String[]list(FilenameFilterfilter)
同上,但只有通过过滤器检查的文件和目录才能被返回booleanmkdir()URLtoURL()把File对象转化为一个URL例:打印指定路径下的子目录结构
FindDirectories.java8.2.1文件管理File类计算机科学与技术学院String[]list()返回File对象下的文件名和子488.2.1文件管理File类计算机科学与技术学院8.2.1文件管理File类计算机科学与技术学院49用于指定路径的代码:if(args.length==0)args=newString[]{".."};try{FilepathName=newFile(args[0]);String[]fileNames=pathName.list();复合成绝对路径:for(inti=0;i<fileNames.length;i++){Filef=newFile(pathName.getPath(),fileNames[i]);8.2.1文件管理File类计算机科学与技术学院用于指定路径的代码:复合成绝对路径:8.2.1文件管理Fi501.FileInputStream类构造方法:FileInputStream(Stringfilename)FileInputStream(Filefile)例:FileInputStreamin1=new
FileInputStream(“c:\1000\hello.java”);例:Filef=newFile(“myfile.dat”);FileInputStreamin2=newFileInputStream(f)用于读写磁盘文件8.2.2FileInputStream和FileOutputStream类计算机科学与技术学院1.FileInputStream类构造方法:例:Fil512.FileOutputStream类构造方法:FileOutputStream(Stringfilename)FileOutputStream(Filefile)例:Stringname=“c:\1000\line.txt”;FileOutputStreamout=newFileOutputStream(name);只能读取字节或字节数组in1、in2、out8.2.2FileInputStream和FileOutputStream类计算机科学与技术学院2.FileOutputStream类构造方法:例:Stri528.2.3.DataInputStream和DataOputStream类1.DataInputStream构造方法:DataInputStream(InputStreamin)常用方法:close()readByte()readInt()readUTF()readFloat()计算机科学与技术学院8.2.3.DataInputStream和DataOput532.DataOutputStream类构造方法:DataOutputStream(OutputStreamin)常用方法:close()writeByte()writeInt()writeUTF()writeFloat()8.2.3.DataInputStream和DataOputStream类计算机科学与技术学院2.DataOutputStream类构造方法:常用方法:8543.FileInputStream类能从文件及其它位置上读取字节,而DataIputStream类能够把字节合成为常用的数据类型。可以把两种类结合起来从而构成过滤器流例:从一个文件中读取一个数字FileInputStreamfin=new
FileInputStream(“line.txt”);DataInputstreamdin=newDataInputStream(fin);intdata1=din.readInt();过滤器8.2.3.DataInputStream和DataOputStream类计算机科学与技术学院3.FileInputStream类能从文件及其它位置上读558.2.4BufferedInputStream和BufferedInputStream类构造方法:BufferedInputStream(InputStreamin)BufferedInputStream(InputStreamin,intn)
用来创建一输入缓冲流BufferedOutputStream(OutputStreamout)BufferedOutputStream(OutputStreamout,intn)用来创建一输出缓冲流
用于从一个流中读取字符,但不会每次都导致设备访问计算机科学与技术学院8.2.4BufferedInputStream和Buff56例:利用缓冲区从文件中读取数据DataInputStreamdin=newDataInputStream(newBufferedInputStream(newFileInputStream(“line.txt”)));Voidunread(intn)回退一个字节8.2.4BufferedInputStream和BufferedInputStream类计算机科学与技术学院例:利用缓冲区从文件中读取数据Voidunread(int57构造方法:PushbackInputStream(Inputstreamin)
构造具有一个字节预先量缓冲流PushbackInputStream(Inputstreamin,intsize)
构造一个指定大小的预先缓冲的流8.2.5PushbackInputStream类用于跟踪中间流的类计算机科学与技术学院构造方法:8.2.5PushbackInputStream588.2.6RandomAccessFile类通过构造RandomAccessFile类,你可以做任何想对文件进行的操作。构造方法:RandomAccessFile(Stringfilename,Stringmode)RandomAccessFile(Filefile,Stringmode)常用方法:readwrite系列publicvoidseek(longpos)throwIOExceptionpublicintSkipBytes(intn)throwIOException计算机科学与技术学院8.2.6RandomAccessFile类598.2.7管道类PipedInputStream类创建是一个输入管道PipedOutputStream创建是一个输出管道输出管道与输入管道连接就形成了一个传输数据的通道
使用这样的管道,用户可以在不同的线程间实现数据共享计算机科学与技术学院8.2.7管道类PipedInputStream类创建是一60管道模型如图:线程1管道输出连接管道输入管道输出线程2线程3管道输入连接8.2.7管道类计算机科学与技术学院管道模型如图:线管道输出连管道输入管道输出线线管道输入连8.61构造输入输出流:PipedInputStreamin=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025办公室租赁合同范本参考
- 2025二手车买卖合同全国正式版
- 2025石油化工管道工程监理安全环保合同
- 2025室内涂料分包合同样本
- 《绿色生活由我启动》课件
- 2025医疗器械采购销售合同模板
- 电子银行承兑合同协议
- 电脑服务外包合同协议
- 电影股权转让合同协议
- 玉林农村建房合同协议
- DB33-1036-2021《公共建筑节能设计标准》
- 岩芯鉴定手册
- 快速排序算法高校试讲PPT
- 甘肃历史与甘肃文化
- 工程勘察设计收费标准
- 高边坡施工危险源辨识及分析
- SAP航空行业数字化转型解决方案(优秀方案集)
- 江苏工业企业较大以上风险目录
- 《村卫生室管理办法(试行)》课件(PPT 49页)
- 监理质量评估报告(主体分部)
- 锅炉爆炸事故演练方案(模板)
评论
0/150
提交评论