




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章,输入/输出,7.1输入/输出、流和相关类 7.2数据的输入/输出 7.3文件的输入和输出,本章目录,7.1输入/输出、流和相关类,一、流的概念 流是一个想象中的无限长的数据序列。流是Java语言输入/输出的方式,Java语言程序通过流来完成输入/输出工作。流有两种类型:输入流和输出流。在java.io包中,定义了输入流和输出流的类,分别以不同形式完成输入/输出工作。,二、java.io包中的输入/输出类 java.lang.Object InputStream ByteArrayInputStream FileInputStream FilterInputStream Buffered
2、InputStream DataInputStream LineNumberInputStream PushbackInputStream ObjectInputStream PipedInputStream SequenceInputStream StringBufferInputStream,java.lang.Object OutputStream ByteArrayOutputStream FileOutputStream FilterOutputStream BufferedOutputStream DataOutputStream PrintStream ObjectOutputS
3、tream PipedOutputStream,java.lang.Object File Reader BufferedReader LineNumberReader CharArreyReader FilterReader PushbackReader InputStreamReader FileReader PipedReader StringReader,java.lang.Object RandomAccessFile Writer BufferedWriter CharArreyWriter FilterWriter OutputStreamWriter FileWriter Pi
4、pedWriter PrintWriter StringWriter,管道(pipe):PipedInputStream类和PipedOutputStream类 过滤:FilterInputStream类和FilterOutputStream类 打印流:PrintStream类 缓冲存储:BufferedInputStream类和BufferedOutputStream类 连续输入:SequenceInputStream类,三、输入/输出流常用方法 输入流常用方法 在InputStream中声明了如下9个方法成员,是经常要使用到的方法。 int read() /读下一字节,返回0255之间的一
5、个整数 int read(byte b) /读取最多b.length个字节写入字节数组 int read(byte b , int off , int len) /读取最多len个字节写入字节数组,off为起始偏移量 close() /关闭输入流,int available() /检测无阻塞情况下可以从这个输入流中读取的字节数 long skip(long n) /跳过并放弃输入流中的n字节数据并返回n boolean markSupported() /测定是否支持标记 mark(int readlimit) /标记输入流的当前位置,随后用reset()方法把流重置于标记处 reset() /
6、将流的当前位置重置于mark()方法置标记处,输出流常用方法 在OutputStream中声明了如下5个方法成员,是经常要使用到的方法。 write(int b) /写指定字节到输出流,内容为b的低8位 write(byte b) /从数组b写b.length个字节到输出流 write(byte b , int off , int len) /从数组b起始偏移量off处写len个字节到输出流 close() /关闭输出流 flush() /清空输出流,7.2数据的输入/输出,一、标准输入/输出 在java.lang包中的System类中定义了三个与设备关联的对象:InputStream类的对象
7、实例in作为标准输入流对象,对应于键盘输入;PrintStream类的对象实例out作为标准输出流对象,对应于显示器输出;PrintStream类的对象实例err作为标准错误输出流对象,对应于显示器输出。,二、基于字节的输入和输出 基于字节的输入和输出是Java语言输入/输出流的基本形式,也是计算机数据存储和传输的常用形式。在InputStream类和OutputStream类中定义的输入/输出方法都是基于字节的数据操作方法。 是程序中最为简便的输入/输出方式,但也是最不能保留数据的原有格式的输入/输出方式。,三、基于字符的输入和输出 处理Unicode字符的两个抽象类Reader和Write
8、r,通过在其基础上定义的子类实现 。是Java语言中特别常用的输入/输出方式。 Reader类和Writer类中所声明的方法都是基于字符的输入和输出的基本方法。 字符流与字节流的相互转换问题是必须要解决的问题。,InputStreamReader类用于读取字节数据并转换为指定字符编码的字符,OutputStreamWriter类用于转换指定字符编码的字符为字节数据并写入输出流。 FileReader类和FileWriter类则假定文件的格式已经是字符编码的,从而实现文件的字符输入/输出功能。特别要指出的是这两个类在处理汉字文件的时候很有用。,BufferedReader类和BufferedWr
9、iter类是带缓冲区的读写字符流。 CharArrayReader类和CharArrayWriter类分别从字符数组中读写字符。 PipedReader类和PipedWriter类则实现了管道字符流,用于在线程间传递信息。StringReader类和StringWriter类分别从字符串读写字符。,FilterReader类和FilterWriter类分别用于读写已过滤的字符流。 PrintWriter类实现了字符流的打印。,四、基本数据类型的输入和输出 DataInput接口和DataOutput接口描述了从输入流中读取基本类型和向输出流中写入基本类型的方法,DataInputStream类
10、和DataOutputStream类分别实现了DataInput接口和DataOutput接口。 这两个类由于分别派生自FilterInputStream类和FilterOutputStream类,亦具有过滤流的功能。,五、对象的输入和输出 ObjectInput接口和ObjectOutput接口中分别声明了readObject()方法和writeObject()方法,能够从输入/输出流中读/写Object。 ObjectInputStream类实现了ObjectInput接口和DataInput接口,能够从输入流中读取对象型数据和基本数据类型数据。ObjectOutputStream类实现了
11、ObjectOutput接口和DataOutput接口,能够向输出流中写入对象型数据和基本数据类型数据。,六、字节数组的输入和输出 ByteArrayInputStream类和ByteArrayOutputStream类中包含有一个内部缓冲区,用来从流中读取或向流中写入字节数组,内部缓冲区用来缓存读写的字节形式的数据,缓冲区的大小可以随字节数据的多少而调节。在这两个类中重写了InputStream类和OutputStream类中的方法成员。,7.3文件的输入和输出,文件是具有符号名而且在逻辑上具有完整意义的信息。 文件是操作系统对计算机外部存储设备上所存储的数据进行有效管理的基本单位。 Jav
12、a语言将每个文件视为顺序字节流。 按照文件的访问方式,文件分为顺序文件和随机访问文件。,一、顺序文件的输入和输出 文件File类的对象实例表示文件系统中的文件路径名和文件名。 该类的构造方法: File(File parent, String child) File(String pathname) File(String parent, String child) File(URI uri),主要的方法成员有: String getName() /获取文件名 String getPath() /获取文件路径 String getAbsolutePath() /获取文件的绝对路径 String
13、 getParent() /获取由当前对象所表示文件的父目录 boolean renameTo(File newName) /更改文件名为参数所指定的文件名 boolean exists() /检测本文件是否存在 boolean canWrite() /检测文件是否可写 boolean canRead() /检测文件是否可读 boolean isFile() /检测对象是否代表一个文件,boolean isDirectory() /检测对象是否代表一个目录 boolean isAbsolute() /检测对象是否代表一个绝对路径 long lastModified() /检测文件最后一次被修改
14、的时间 long length() /检测文件长度 boolean delete() /删除文件 boolean mkdir() /创建目录 String list() /列出当前目录中的文件,经常使用BufferedReader类和BufferedWriter类来完成文件的读写功能,使用StringBuffer类来进行字符串读入时的缓冲存储。 对于汉字内容的文件,通常使用FileReader类和FileWriter类来完成读写。 经常使用的一种“包装流对象技术”,把一种流的服务添加到另一种流中。,二、随机访问文件的输入和输出 随机访问文件类RandomAccessFile代表一个可以随机访问
15、的文件,以避免对一般文件操作时从文件开始处顺序读写文件,可以针对现存文件建立随机访问文件。RandomAccessFile对象具有FileInputStream、FileOutputStream、DataInputStream和DataOutputStream的所有功能,其中定义有文件指针,并可以分别对各种基本数据类型的数据进行专门的读写操作。,构造方法为 public RandomAccessFile(File file , String mode) public RandomAccessFile(String name , String mode) file代表File对象,name代表文件名,mode取“r”或“rw”代表“只读”或“读写”,意味着创建的随机访问文件可以是只读的,也可以是可读写的。新创建的随机访问文件对象实例的文件指针是指向文件的开始位置的,当进行文件的读写操作时,文件指针将隐式地按照所读写的内容的字节数自动调节位置。,主要方法成员 public long getFilePointer() /返回文件的当前偏移量 public long length() /返回文件的长度 public void seek(long pos) /设置相对于文件头的文件指针偏移量 除了这几个方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 落实请销假制度管理办法
- 虎丘区网络营销管理办法
- 融机构贷款管理暂行办法
- 行政许可停车位管理办法
- 西安电子证管理暂行办法
- 设计管理部资料管理办法
- 证券投资者行为管理办法
- 财务专家库管理暂行办法
- 财政部规范委托管理办法
- 贵州省招商指标管理办法
- 医保自纠自查整改报告
- 2023年八少八素图形推理测试真题精选
- 国家讲解员培训课件
- 浅析图书发行企业在新形势下的财务管理策略
- GB/T 6478-2015冷镦和冷挤压用钢
- 2016众泰t600运动版原厂维修手册与电路图-使用说明
- 金属缠绕垫(1002)要点课件
- 局限期小细胞肺癌放疗进展课件
- 教师情绪和压力疏导课件
- ISO-IEC 27002-2022中文版完整详细
- 医疗器械公司组织机构与部门设置说明
评论
0/150
提交评论