版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1JavaJava高级程序设计高级程序设计2第一部分 第一章 Java入门基础 第二章 异常 第三章 Java Applet类型 第四章 图形用户界面GUI(一)AWT 第五章 Java中的事件处理机制 第六章 图形用户界面GUI(二)Swing Java高级程序设计高级程序设计3 第七章 多线程 第八章 I/O输入输出流 第九章 Java数据库连接(JDBC) 第十章 Java网络编程 第二部分 第一章 Java API 第二章 Java与多媒体 第三章 Java Bean基础 Java高级程序设计高级程序设计I/O输入输出流输入输出流第八章 I/O输入输出流8.1 流的概念8.2 字节流、
2、字符流和预订义流 8.2.1字节流 8.2.2字符流 8.2.3预订义流8.3 File类8.4 InputStream和OutputStream 8.4.1 8.4.2Java高级程序设计高级程序设计I/O输入输出流输入输出流第八章 I/O输入输出流8.5 Reader和Writer 8.5.1 8.5.28.6 RandomAccessFile类8.7 PipedInputStream和PipedOutputStream8.8 过滤流和节点流 8.8.1过滤流和节点流 8.8.2BufferedInputStream和BufferedOutputStream 8.8.3DataInputS
3、tream和DataOutputStreamJava高级程序设计高级程序设计I/O输入输出流输入输出流8.1 流的概念流概念的理解流的分类 按流动的方向分为输入流和输出流 按流动的数据类型分为字符流和字节流 按流的建立方式和工作原理 分为节点流和过滤流Java高级程序设计高级程序设计I/O输入输出流输入输出流 8.2 字节流、字符流 和预定义流 字节流 字节流提供了对字节进行输入输出处理的方法 。按照传输的方向字节流可以分为InputStream和OutputStream。其中InputStream是所有输入字节流的父类,OutputStream是所有输出字节流的父类。 在InputStrea
4、m和OutputStream中定义了输入字节流和输出字节流最基本的方法,他们是抽象类。Java高级程序设计高级程序设计I/O输入输出流输入输出流 8.2 字节流、字符流 和预定义流 输入字节流的类层次图Java高级程序设计高级程序设计I/O输入输出流输入输出流 8.2 字节流、字符流 和预定义流 输出字节流的类层次图Java高级程序设计高级程序设计I/O输入输出流输入输出流 8.2 字节流、字符流 和预定义流 字符流 字符流提供了对字符进行输入输出处理的方法。字节流与字符流主要的区别是他们的处理方式。 所有的字节流都是基于字节对数据进行处理,而实际使用中很多情况我们处理的数据是文本字符,所以J
5、ava提供了基于字符处理的字符流。Java高级程序设计高级程序设计I/O输入输出流输入输出流 8.2 字节流、字符流 和预定义流 按照传输的方向字符流可以分为Reader和Writer。其中Reader是所有输入字符流的父类,Writer是所有输出字符流的父类。 在Reader和Writer中定义了输入字符流和输出字符流最基本的方法。Java高级程序设计高级程序设计I/O输入输出流输入输出流 8.2 字节流、字符流 和预定义流 输入字符流的类层次图Java高级程序设计高级程序设计I/O输入输出流输入输出流 8.2 字节流、字符流 和预定义流 输出字符流的类层次图Java高级程序设计高级程序设计
6、I/O输入输出流输入输出流 8.2 字节流、字符流 和预定义流 预订义流 Java程序默认导入java.lang包,这个包中有一个System类,这个类包含三个预定义静态常量,分别是in、out和err。 System. in是标准输入流,默认设备是键盘。System. out是标准输出流,默认设备是控制台。System. err是标准错误流,默认设备是控制台。Java高级程序设计高级程序设计I/O输入输出流输入输出流8.3 File类File类 Java中的File类指文件和目录的集合。 Java语言中通过File类来建立与磁盘文件的联系。File类主要用来获取文件或者目录的信息,File类
7、的对象本身不提供对文件的处理功能,要想对文件实现读写操作需要使用输入输出流。 Java高级程序设计高级程序设计I/O输入输出流输入输出流8.3 File类注意: Java能正确处理UNIX和Windows/DOS约定路径分隔符。如果在Windows版本的Java下用斜线(/),路径处理依然正确。记住,如果你用Windows/DOS使用反斜线()的约定,你需要在字符串内使用它的转义序列()。Java约定是用UNIX和URL风格的斜线来作路径分隔符。 Java高级程序设计高级程序设计I/O输入输出流输入输出流8.4 InputStream 和OutputStream 是InputStream类的子
8、类。常用的构造方法如下: (String name)使用指定的文件名name创建一个的对象,如果文件不存在会产生。 (File file) 使用指定的文件对象来创建一个的对象,如果文件不存在会产生。Java高级程序设计高级程序设计I/O输入输出流输入输出流8.4 InputStream 和OutputStream 下面的例子创建了两个使用同样磁盘文件且各含一个上述构造方法的对象: f1 = new (hello. txt)File f = new File(hello. txt ); f2 = new (f); 尽管第一个构造方法可能更常用到,第二个构造方法允许在把文件赋给输入流之前用File
9、对象的方法更进一步检查文件,例如判断文件是否存在。 Java高级程序设计高级程序设计I/O输入输出流输入输出流8.4 InputStream 和OutputStream 的常用方法: int read( )如果下一个字节可读则返回一个整型,遇到文件尾时返回-1 int read(byte buffer )试图读取buffer.length个字节到buffer中,并返回实际成功读取的字节数。遇到文件尾时返回-1 int read(byte buffer , int offset, int numBytes)试图读取buffer中从bufferoffset开始的numBytes个字节,返回实际读取
10、的字节数。遇到文件尾时返回-1 void close( )关闭输入源。关闭之后的读取会产生IOException异常Java高级程序设计高级程序设计I/O输入输出流输入输出流8.4 InputStream 和OutputStream 是OutputStream类的子类。常用的构造方法如下: (String name) 使用指定的文件名name创建一个的对象。 (File file) 使用指定的文件对象来创建一个的对象。 的创建不依赖于文件是否存在。在创建对象时在打开输出文件之前创建它。 Java高级程序设计高级程序设计I/O输入输出流输入输出流8.4 InputStream 和OutputSt
11、ream 的常用方法: void close( )关闭输出流。关闭后的写操作会产生IOException异常 void flush( ) 刷新输出缓冲区 void write(int b)向输出流写入单个字节。注意参数是一个整型数,它允许你不必把参数转换成字节型就可以调用write( ) void write(byte buffer )向一个输出流写一个完整的字节数组 void write(byte buffer , int offset, int numBytes) 写数组buffer以bufferoffset为起点的numBytes个字节区域内的内容Java高级程序设计高级程序设计I/O输
12、入输出流输入输出流8.5 Reader和Writer字符流为基于字符的输入输出处理提供了丰富的功能,而Reader和Writer是所有字符流的基类。Reader和Writer都是抽象类,它们定义了字符流的一些常用方法(见书表8-5、表8-6)。Java高级程序设计高级程序设计I/O输入输出流输入输出流8.5 Reader和Writer 类是Reader类的子类,它可以对文件进行读取。常用的构造方法如下: (String name) 使用指定的文件名name创建一个的对象,如果文件不存在会产生。 () 使用指定的文件对象来创建一个的对象,如果文件不存在会产生。 常用的方法参考Reader类。Ja
13、va高级程序设计高级程序设计I/O输入输出流输入输出流8.5 Reader和Writer 类是Writer类的子类,它可以对文件进行写入。它常用的构造方法如下: (String name) 使用指定的文件名name创建一个的对象。 (File file) 使用指定的文件对象file创建一个的对象。 类的创建不依赖于文件存在与否。在创建文件之前,将在创建对象时打开它来作为输出 。Java高级程序设计高级程序设计I/O输入输出流输入输出流8.6 RandomAccessFile类 RandomAccessFile类 有时候必须对文件的某些部分进行读取或者写入的操作,也就是进行随机存取,即读写文件的
14、位置要能够在文件中随意的移动。而我们前面提到的输入输出流都只能对文件进行顺序的读写,当要对文件进行随机存取的时候我们使用RandomAccessFile 类来进行处理。Java高级程序设计高级程序设计I/O输入输出流输入输出流8.6 RandomAccessFile类类RandomAccessFile的声明为: public class RandomAccessFile extends Object implements DataInput, DataOutput 接口DataInput 中定义的方法主要包括从流中读取基本类型的数据、读取一行数据、或者读取指定长度的字节数。如:readBool
15、ean( )、readInt( )、readLine( )、readFully( ) 等。接口DataOutput 中定义的方法主要是向流中写入基本类型的数据、或者写入一定长度的字节数组。如:writeChar( )、writeDouble( )、write( ) 等。 注意:RandomAccessFile可对文件实现读和写两种操作。Java高级程序设计高级程序设计I/O输入输出流输入输出流8.6 RandomAccessFile类RandomAccessFile类的常用构造方法: RandomAccess name, String mode) name是文件名,mode是打开方式,例如“r
16、”表示只读,“rw”表示可读写。 RandomAccess file, String mode) file是文件对象,mode 是打开方式,例如“r”表示只读,“rw”表示可读写。Java高级程序设计高级程序设计I/O输入输出流输入输出流8.6 RandomAccessFile类RandomAccessFile类操作文件指针的常用方法: long get( ) 用于得到当前的文件指针 void seek(long pos) 用于移动文件指针到指定的位置,调用seek( )方法后,接下来的读或写操作将在文件的新位置发生使文件指针向前移动指定的n个字节Java高级程序设计高级程序设计I/O输入输出
17、流输入输出流8.7 PipedInputSream和PipedOutputStream 管道流 管道流不同于I/O流和网络流,它的本质是内存中的一块存储数据的结构体。如果写线程当且仅当管道满的时候会阻塞,读线程当且仅当管道空的时候会阻塞。 管道流,用于线程间的通信。要使管道流有用,必须同时构造管道输入流和管道输出流。Java高级程序设计高级程序设计I/O输入输出流输入输出流8.7 PipedInputSream和PipedOutputStream Java为这种管道概念提供了PipedInputStream和PipedOutputStream类。将这两者结合在一起,它们允许一个Java组件输出
18、数据到输出流,而另一个组件将这个输出流当作输入流来读取。管道输入流和输出流必须连接才能实现数据的流动。Java高级程序设计高级程序设计I/O输入输出流输入输出流8.7 PipedInputSream和PipedOutputStream管道输入流的构造方法为: public PipedInputStream( ) 创建一个没有连接输出流的输入流。 public PipedInputStream(PipedOutputStream src) 构造一个连接参数指定的输出流的输入流。管道输出流的构造方法为 : public PipedOutputStream( ) 创建一个没有连接输入流的输出流。 p
19、ublic PipedOutputStream(PipedInputStream snk)创建一个连接由参数指定的输入流的输出流 Java高级程序设计高级程序设计I/O输入输出流输入输出流8.8 过滤流与节点流 过滤流与节点流 根据流的建立方式和工作原理,将流分为:节点流(Node Streams)直接建立在输入、输出媒体上。过滤流(Filter Streams),过滤流必须以某一个节点流作为流的来源,可以在读/写数据的同时对数据进行处理。Java高级程序设计高级程序设计I/O输入输出流输入输出流8.8 过滤流与节点流过滤流必须建立在节点流之上,对节点流中的数据进行某些加工、处理,并提供一些友
20、好的方法供用户进行输入、输出操作以及流控制。我们前面学习过的、对文件进行直接的操作,属于节点流。 Java高级程序设计高级程序设计I/O输入输出流输入输出流BufferedInputStream和BufferedOutputStreamJava中的InputStream类对流数据进行封装的时候是不具备缓冲功能的,由于数据的传输速度远小于处理器的运算速度 ,会造成处理器的浪费。因此,Java语言提供了BufferedInputStream这个过滤流来封装InputStream节点流,对流数据增加了带缓冲的封装来提高数据处理的性能。同样的提供了BufferedOutputStream来提高Outp
21、utStream类的数据处理性能。Java高级程序设计高级程序设计I/O输入输出流输入输出流BufferedInputStream和BufferedOutputStreamBufferedInputStream类 常用的构造方法: public BufferedInputStream(InputStream in) public BufferedInputStream(InputStream in,int size) 两种构造方法都是为某种输入流in创建一个新的缓冲流,方法一创建的缓冲大小为缺省值(32 bytes),方法二则由用户指定缓冲区大小,在性能优化时,通常都把size的值设定为内存页大小或I/O块大小的整数倍。 在I/O量不大时,该类所起作用不是很明显;但当程序I/O量很大,且对程序效率要求很高时,使用该类就能大大提高程序的效率。Java高级程序设计高级程序设计I/O输入输出流输入输出流BufferedInputStream和BufferedOutputStreamBufferedOutputStream类 常用的构造方法: public BufferedOutputStream(OutputStream out) public BufferedOutputStream(OutputStream out,int size) Buf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海底捞组织内部管理制度
- 陕西服装工程学院《现代统计学基础》2024-2025学年第二学期期末试卷
- 煤矿安全部内部管理制度
- 监理内部例会制度
- 篮球体育内部管理制度
- 精神病院内部管理制度
- 购物平台内部管理制度
- 进出口企业内部审计制度
- 重庆城市科技学院《离散数学基础》2024-2025学年第二学期期末试卷
- 西安医学院《工程制图C》2024-2025学年第二学期期末试卷
- 2026届广东华南师大附中数学高一下期末达标检测模拟试题含解析
- 2025年郑州电力高等专科学校单招职业技能考试试题及答案解析
- 2025年宜春职业技术学院单招综合素质考试试题及答案解析
- 家政保洁服务标准化手册
- 2026天津宏达投资控股有限公司及所属企业招聘工作人员16人备考题库带答案详解(完整版)
- 洁净灯具施工方案(3篇)
- 政治试题-汕头市2025-2026学年度普通高中毕业班教学质量监测(含解析)
- 2026-2030中国一次性餐盒行业深度调研及投资前景预测研究报告
- 2026年春苏教版新教材小学科学二年级下册(全册)教学设计(附教材目录P97)
- 三项管理制度及生产安全事故应急救援预案
- 2026年国家电网招聘之电网计算机考试题库500道含完整答案(历年真题)
评论
0/150
提交评论