javaio中的基本流类-MINGJNU课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《javaio中的基本流类-MINGJNU课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javaio 中的 基本 MINGJNU 课件
- 资源描述:
-
1、第九章 Java输入输出系统本章目录流的基本概念流的基本概念 1 1字节流字节流 2 2字符流字符流 3 3FileFile类类 4 4System.inSystem.in和和System.outSystem.out对象对象 5 5FileInputStreamFileInputStream类和类和FileOutputStreamFileOutputStream类类6 6FileReaderFileReader类和类和FileWriterFileWriter类类 7 7过滤流过滤流 8 8文件的随机访问文件的随机访问 9 9案例分析案例分析:多种流多种流的实现的实现1010教学目标掌握流的基本
2、概念掌握Java中各种常用输入/输出流的基本用法能够熟练地编写应用程序解决文件的读写问题。教学重点字节流与字符流的区别File类的使用过滤流的合理使用文件的随机访问操作9.1 流的基本概念 java.io包:支持流的输入输出支持流的输入输出 十分巨大,定义了大约十分巨大,定义了大约60个类,包含大量方法个类,包含大量方法 要了解更多的信息参看要了解更多的信息参看API文档文档 在Java1.3及其以后的版本中,读写文件的唯一手段就是使用流。9.1 流的基本概念 流(stream):是输入和输出设备的一种抽象表示,这些设备是是输入和输出设备的一种抽象表示,这些设备是数据源或数据终点。数据源或数据
3、终点。可以向流中写入数据,也可以从流中读出数据。可以向流中写入数据,也可以从流中读出数据。大家可以把流想象为流入自己程序或从自己程序大家可以把流想象为流入自己程序或从自己程序中流出的字节序列。中流出的字节序列。9.1 流的基本概念 为什么引入流作为的基本输入输出操作?让实现这些操作的程序编码独立于所涉及的设备。让实现这些操作的程序编码独立于所涉及的设备。这样做的好处有两点:这样做的好处有两点:1.不必担心各种设备的具体工作机制,对于它们的不必担心各种设备的具体工作机制,对于它们的管理均在幕后进行。管理均在幕后进行。2.用户的程序可以适用于各种输入输出设备,改变用户的程序可以适用于各种输入输出设
4、备,改变输入输出设备时不用改写程序编码。输入输出设备时不用改写程序编码。9.1 流的基本概念流式输入输出的特点每个数据都必须等待排在它前面的数据读入或每个数据都必须等待排在它前面的数据读入或送出之后才能被读写;送出之后才能被读写;每次读写操作处理的都是序列中剩余的未读写每次读写操作处理的都是序列中剩余的未读写数据中的第一个,而不能随意选择输入输出的数据中的第一个,而不能随意选择输入输出的位置。位置。9.1 流的基本概念9.1 流的基本概念 Java中有两种基本的流 (1)输入流:)输入流:打开流打开流 当流中还有数据时执当流中还有数据时执行读操作行读操作 关闭流。关闭流。(2)输出流:)输出流
5、:打开流打开流 当有数据需要输出时当有数据需要输出时执行写操作执行写操作 关闭流。关闭流。9.1 流的基本概念 输出流:从计算机流向外设的数据序列,即把数据写入流时,该流称为输出流。输出流可以通往任何可以传输字节序列的设备,输出流可以通往任何可以传输字节序列的设备,例如硬盘上的文件,或连接用户系统至远程系统例如硬盘上的文件,或连接用户系统至远程系统的电话线路。输出流也可以通向显示器,但这会的电话线路。输出流也可以通向显示器,但这会大大限制其真正的功能。大大限制其真正的功能。输入流:从外设流入计算机的数据序列;9.1 流的基本概念程序程序输入流输入流输出流输出流数据数据数据数据显示器显示器键盘键
6、盘9.1 流的基本概念 1.输入流(Inputstream)通过打开一个到数据源(文件、内存或网络端口上的数据)的输入流,程序可以从数据源上顺序读取数据。读数据的逻辑为:读数据的逻辑为:open a streamopen a streamwhile more informationwhile more informationread informationread informationclose the streamclose the stream9.1 流的基本概念 2.输出流(Outputstream)通过打开一个到目标的输出流,程序可以向外部目标顺序写数据9.1 流的基本概念 2.输出
7、流(Outputstream)文件,当向其中写数据时,它就是一个文件,当向其中写数据时,它就是一个输出流输出流;当从其中读取数据时,它就是一个当从其中读取数据时,它就是一个输入流输入流。键盘只是一个键盘只是一个输入流输入流,屏幕只是一个屏幕只是一个输出流输出流。写数据的逻辑为:写数据的逻辑为:open a streamopen a streamwhile more informationwhile more informationwrite informationwrite informationclose the streamclose the stream9.1 流的基本概念 另外,根据流
8、中数据单位的不同,可将流分为字节流和字符流。(1)字节流:)字节流:流中数据以流中数据以8位字节为单元进行位字节为单元进行读写。读写。(2)字符流:)字符流:流中数据以流中数据以16位字符为单位进位字符为单位进行读写。行读写。9.1 流的基本概念 java.io包支持两种类型的流:字符流类(字符流类(Character Streams)字符流类用字符流类用于向字符流读写于向字符流读写1616位二进制字符。位二进制字符。字节流类(字节流类(Byte Streams)字节流类用于向字节流类用于向字节流读写字节流读写8 8位二进制的字节。一般地,字节流位二进制的字节。一般地,字节流类主要用于读写诸如
9、图象或声音等的二进制数据。类主要用于读写诸如图象或声音等的二进制数据。9.1 流的基本概念java.iojava.io中的基本流类:中的基本流类:说明:它们是抽象类,不能直接创建对象。说明:它们是抽象类,不能直接创建对象。9.2 字节流 InputStream类和OutputStream类是字节流的两个顶层父类。它们提供了输入流类与输出流类的通用API。字节流一般用于读写二进制数据,例如图像和声音数据。有两个字节流ObjectInputStream和ObjectOutputStream是用来实现对象的串行化,即对象的输入输出。9.2 字节流 1.InputStream类9.2 字节流read(
10、):从流中读入数据:从流中读入数据skip():跳过流中若干字节数:跳过流中若干字节数available():返回流中可用字节数:返回流中可用字节数mark():在流中标记一个位置:在流中标记一个位置reset():返回标记过的位置:返回标记过的位置 markSupport():是否支持标记和复位操作:是否支持标记和复位操作 close():关闭流:关闭流9.2 字节流用于过滤现有流的输入用于过滤现有流的输入9.2 字节流 FilterInputStream类有9个直接子类,它们提供对输入流数据过滤或转换的更多的特殊方式。BufferedInputStream DataInputStream
11、CheckedInputStream CipherInputStream DigestInputStream InflaterInputStream LineNumberInputStream ProgressMonitorInputStream PushbackInputStream输9.2 字节流 BufferedInputStream 把流包装到把流包装到BufferedInputStream对象中的效果对象中的效果是将基本数据流缓冲入内存,使得一次可以从是将基本数据流缓冲入内存,使得一次可以从流中读入大块数据流中读入大块数据(其最大值取决于缓冲区的大其最大值取决于缓冲区的大小小),然后
12、让,然后让read方法可以直接从内存缓冲区中方法可以直接从内存缓冲区中读取数据,当缓冲区为空时,仅从基本数据流读取数据,当缓冲区为空时,仅从基本数据流执行一次真正的读操作。执行一次真正的读操作。BufferedInputStream keyboard=new BufferedInputStream(System.in);9.2 字节流n2.OutputSteam类 9.2 字节流nwrite(int b):将一个整数输出到流中(只输出低:将一个整数输出到流中(只输出低位字节,为抽象方法)位字节,为抽象方法)nwrite(byte b):将字节数组中的数据输出到流:将字节数组中的数据输出到流中中
13、nwrite(byte b,int off,int len):将数组:将数组b中从中从off指指定的位置开始,长度为定的位置开始,长度为len的数据输出到流中的数据输出到流中nflush():刷空输出流,并将缓冲区中的数据强制:刷空输出流,并将缓冲区中的数据强制送出送出nclose():关闭流:关闭流9.2 字节流OutputStreamOutputStreamFileOutputStreamFileOutputStreamObjectOutputStreamObjectOutputStreamByteArrayOutputStreamByteArrayOutputStreamPipedOut
14、putStreamPipedOutputStreamFilterOutputStreamFilterOutputStream用于向文件写用于向文件写用于将对象写入流用于将对象写入流用于向字节数组写用于向字节数组写用于向流管道写用于向流管道写用于过滤现有流的输出用于过滤现有流的输出9.3 字符流 字符流能够处理Unicode字符集中所有的字符,而字节流限于处理ISOLatin1的8位字节 字符流采用了统一的编码标准,可国际化 使用字符流来读写文本类数据。Reader类和Writer类是java.io包中两个字符流类的顶层抽象父类。9.3 字符流 Reader和Writer都是抽象类。Reader
15、和Writer对象通常使用InputStream或OutputStream对象来创建 InputStream或OutputStream对象封装了与最终数据源或数据终点这种外设的连接。9.3 字符流 ReaderReaderInputStreamReaderInputStreamReaderBufferedReaderBufferedReaderPipedReaderPipedReaderCharArrayReaderCharArrayReaderStringReaderStringReader用于读取字符流用于读取字符流用于缓冲其他用于缓冲其他ReadersReaders类类用于读取用于读取P
16、ipedWriterPipedWriter用于读取字符数组用于读取字符数组用于读取字符串用于读取字符串FilterReaderFilterReader用于读取过滤后的流用于读取过滤后的流9.3 字符流 用于像读取字符流一样读取二进制输入流的具体类是InputStreamReader。InputStreamReader类定义了3种read()方法,这些方法将从基本流中读取一个或多个字节,并且使用默认转换方式将它们由本地字符编码转换为Unicode码后,再将它们返回。InputStreamReader keyboard=new InputStreamReader(System.in);如果使用Bu
17、fferedReader对象来缓冲数据流,则读取工作的效率会有所提高。CharArrayReader对象创建于数组,并且允许用户从数组读取数据,就像是从字符输入流中读取数据一样。StringReader对象类实质上做相同的事情,只是处理的是String对象。9.3 字符流 BufferedReader keyboard=new BufferedReader(new InputStreamReader(System.in);9.3 字符流 WriterWriterOutputStreamWriterOutputStreamWriterBufferedWriterBufferedWriterPip
18、edWriterPipedWriterCharArrayWriterCharArrayWriterStringWriterStringWriter用于写字符流用于写字符流用于缓冲其他用于缓冲其他WritersWriters类类用于向用于向PipedReaderPipedReader写写用于向字符数组写用于向字符数组写用于向字符串写用于向字符串写PrintWriterPrintWriter用于写格式化数据用于写格式化数据FilterWriterFilterWriter用于写过滤后的流用于写过滤后的流 OutputStreamWriter类将字符写入基本二进制流中,它有一个子类FileWriter
19、,FileWriter将字符写入封装文件的流。PrintWriter类与打印没有什么联系。PrintWriter类定义了用于将二进制数格式化为字符,并且把它写入数据流的方法。9.3 字符流 9.3 字符流 注意:PrintWriter对象所作的格式化无助于让输出行中的各项内容按列对齐排列。如果希望产生特定的格式输出,必须自己去编写代码。StringWriter strWriter=new StringWriter();PrintWriter writer=new PrintWriter(strWriter);double value=2.71828;writer.println(value);
20、StringBuffer str=strWriter.getBuffer();9.4 File类 File类功能:得到文件或目录的描述信息,包括文件名称、所在目录、可读性、可写性、长度和文件的最后修改时间等可以生成新的目录改变文件名删除文件列出一个目录中所有的文件或与某个模式相匹配的文件等。9.4 File类 File类的构造方法:(1)public File(String path)参数path是包含目录和文件名的字符串,Java把目录看作一种特殊的文件,因此该字符串可以没有文件名,这时若调用方法isFile()将返回false,说明File对象是目录而不是文件。(2)public File
21、(String path,String name)path是目录路径(父目录),name可包含目录和文件名(相对于父目录)。(3)public File(File dir,String name)dir是一个文件对象(父目录),child可包含目录和文件名(相对于父目录)。9.4 File类 File类的构造方法:(1)public File(String path)参数path是包含目录和文件名的字符串,Java把目录看作一种特殊的文件,因此该字符串可以没有文件名,这时若调用方法isFile()将返回false,说明File对象是目录而不是文件。(2)public File(String p
22、ath,String name)path是目录路径(父目录),name可包含目录和文件名(相对于父目录)。(3)public File(File dir,String name)dir是一个文件对象(父目录),child可包含目录和文件名(相对于父目录)。例如:File f1=new File(D:/Java);File f2=new File(D:/Java,test.txt);File f3=new File(f1,test.txt);File f4=new File(file:/D:/Java/test.txt)9.4 File类9.4 File类方 法说 明public String
23、getName()返回文件名。public String getPath()返回文件路径。public String getAbsolutePath()返回文件绝对路径。public String getParent()返回文件的父目录。public boolean exists()判断文件是否存在。public boolean canWrite()判断文件是否可写。public boolean canRead()判断文件是否可读。public boolean isFile()判断对象是否是文件。public boolean isDirectory()判断对象是否是目录。public nati
24、ve boolean isAbsolute()如果文件名为绝对名,则返回真。9.4 File类方 法说 明public long lastModified()返回文件最后修改时间。public long length()返回文件长度。public boolean mkdir()创建目录。public boolean renameTo(File dest)重命名文件。public boolean mkdirs()创建目录及子目录。public String list()列出目录下的所有文件和目录。public String list(FilenameFilter filter)列出目录下的指定文
25、件。public boolean delete()删除文件对象。public int hashCode()为文件创建散列代码。public boolean equals(Object obj)判断是否同对象obj相等。public String toString()返回文件对象的字符串描述。9.4 File类【例9-1】输入一个文件名,显示该文件的相关属性信息。import java.io.*;public class FileClass public static void main(String args)System.out.println(enter file name:);char
展开阅读全文