Java面向对象编程-第16章Java I/O系统
来源:互联网 发布:大数据相关论坛 编辑:程序博客网 时间:2024/05/21 17:18
第16章 Java I/O系统
在Java中,把一组有序的数据序列称为流。流可以分为输入流和输出流。程序从输入流读取数据,向输出流写入数据。
Java的I/O系统负责处理程序的输入和输出,I/O类库位于java.io包中。按照数据流中最小的数据单元可以分为字节流和字符流等。类库中的InputStream和OutputStream对应字节流,Reader和Writer对应字符流。
一、输入流和输出流概述
类库包中的InputStream表示字符输入流,OutputStream表示字符输出流,都是抽象类,不能实例化。
InputStream类提供了一系列和读取数据相关的方法:
1、int read():从输入流读取数据,主要有以下3种重载形式:
(1)int read():从输入流中读取一个8位的字节,并转换为0-255之间的整数,返回。如果读取遇到输入流的结尾,则返回-1。
(2)int read(byte[] b):从输入流读取若干个字节,并存储到参数指定的字节数组,返回读取的字节数。如遇到结尾返回-1。
(3)int read(byte[] b,int off,int len):从输入流读取若干个字节,保存到b中。参数off指定在字节数组中开始保存数据的起始下标,参数len指定读取的字节数量。返回实际读取的字节数,如果遇到结尾,返回-1。
2、void close():关闭输入流。当完成所有读操作后,应当关闭输入流。
3、int available():返回可以从输入流中读取的字节数目。
4、skip(long n):从输入流中跳过n个字节。
同样OutputStream类提供了写操作相关方法:
1、void write():向输入流中写入数据,同样有3种重载形式:
(1)void write(int b):向输出流中写入一个字节。
(2)void write(byte[] b):把参数b指定的字节数组中的所有字节写到输出流。
(3)void write(byte[] b,int off,int len):把参数b指定的字节数组中的若干字节写到输出流,off指定字节数组的起始下标,从这个位置开始输出len个字节。
2、void close():关闭输出流。
3、void flush():强制把缓冲区的数据写到输出流中。
*为保证输入流或输出流及时关闭,一般都把关闭流的代码放到finally代码块中,I/O操作通常采用以下流程:
InputStream in;OutputStream out;try{ 处理输入流; 处理输出流;}catch(IOException e){ 处理IO异常;}finally{ in.close(); out.close();}
二、输入流
所有字节输入流都是InputStream类的直接或间接子类。几种主要类型有:
1、ByteArrayInputStream:把字节数组转换为输入流。
2、FileInputStream:从文件中读取数据。
3、PipedInputStream:连接一个PipedOutputStream。
4、SequenceInputStream:把几个输入流转换为一个输入流。
(一)字节数组输入流:ByteArrayInputStream类
ByteArrayInputStream类从内存中的字节数组中读取数据,其数据源是一个字节数组,其构造方法包括:
(1)ByteArrayInputStream(byte[] buf):参数buf指定字节数组类型的数据源。
(2)ByteArrayInputStream(byte[] buf,int offset,int length):参数buf指定字节数组类型的数据源,参数offset指定从数组中开始读数据的起始下标位置,length指定读取字节数。
import java.io.*;public class ByteArrayTester { public static void main(String[] args)throws IOException{ byte[] buff=new byte[]{2,15,67,-1,-9,9}; ByteArrayInputStream in= new ByteArrayInputStream(buff,1,4); int data=in.read(); while(data!=-1){ System.out.print(data+" "); data=in.read(); } in.close(); }}
运行结果为:15 67 255 247
因为对于数据源中的-1和-9本为字节型8位数据,转为data的int型后数值发生变化。
(二)文件输入流:FileInputStream类
FileInputStream类从文件中读取数据,有以下构造方法:
(1)FileInputStream(File file):参数file指定文件数据源。
(2)FileInputStream(String name):参数指定文件数据源的路径信息。
- Java面向对象编程-第16章Java I/O系统
- 《Java面向对象编程》学习笔记16—Java I/O系统
- 《Java面向对象编程》学习笔记16—Java I/O系统
- 《Java面向对象编程》学习笔记16—Java I/O系统
- 《Java编程思想》第18章 Java I/O系统
- java编程思想-第18章-java I/O系统
- 第12章 Java I/O系统
- 第18章 JAVA I/O系统
- 第18章、java I/O系统
- java编程思想读书笔记 第十八章 java I/O系统(第一篇)
- java面向对象 第十章 File I/O
- Thinking in Java 第12章 Java I/O系统
- 《Java 编程思想》--第十八章:Java I/O 系统
- 《java编程思想》第十八章 java I/O系统
- 《java编程思想》第十八章 java I/O系统
- Java编程思想 第十八章 Java I/O系统
- java编程思想读书笔记-第十一章 java I/O系统
- java编程思想读书笔记 第十八章 java I/O系统(第四篇 新I/O)
- java基础之 Advanced Class Design
- <备战蓝桥杯之嵌入式>——输入捕获
- 大图压缩(官方文档中方法)
- android 开发技巧(4)--偏好设置使用技巧
- Redis源码解析:07压缩列表
- Java面向对象编程-第16章Java I/O系统
- Replacement(CodeForces 135A)
- BIRT不支持的两个Feature
- Rational Rose2007(v7.0)下载地址、安装及激活详解教程(图)
- PCB板图设计的基本原则以及注意事项
- SQLite使用与错误记录
- 【BZOJ2005】【codevs1937】能量采集,数论练习之二维公约数求和
- nchar,char,varchar与nvarchar区别
- ios开发中masonry的使用心得