开发工具与关键技术:Java
作者:吴永旗
撰写时间:2019年5月7日
- 在java.io包下主要包括输入流、输出流两种IO流,每种输入、输出流又可分为字节流和字符流两大类。其中字节流以字节为单位来处理输入、输出操作,而字符流则以字符来处理输入、输出操作。按照流的角色来分,可以分为节点流和处理流。
- 输入流和输出流的描述
输入流:只能从中读取数据,而不能向其写入数据,由InputStream和Reader作为基类。
输出流:只能向其中写入数据,而不能从中读取数据,由OutputStream和Writer作为基类。 - 字节流和字符流的描述
字节流: 字节流操作的数据单元是8位的字节,由InputStream和OutputStream作为基类。
字符流:字符流操作的数据单元是16位的字符,由 Reader和 Writer作为基类。 - 节点流和处理流的描述
节点流:可以从向一个特定的IO设备(如磁盘、网络)读/写数据的流。也被称为低级流。
处理流:用于对一个已存在的流进行连接或封装,通过封装后的流来实现数据读/写功能。也称为高级流。 - 常用的1/O类流如下:
- InputStream和Reader 输入流
6.2 Reader类的方法
其实InputStream和Reader输入流的写法基本是一样,区别于操作的数据单元不同
1.InputStream 类的示范
public class Demo2 {
public static void main(String[] args) throws IOException {
//创建流
InputStream in =new FileInputStream(“G:/z/t.txt”);
//创建缓存数组
byte[] by=new byte[1024];
//存放读取的字节数
int count=0;
//读取数据
while ((count=in.read(by, 0, by.length))!=-1) {
System.out.println(new String(by,0,count,“gbk”));
}
//一定要记得关闭流
in.close();
}
}
2.Reader 类的示范
public class Demo2 {
public static void main(String[] args) throws IOException {
//创建字符流
Reader in =new FileReader(“G:/z/t.txt”);
//创建缓存数组
char[] by=new char[1026];
//存放读取的字符数
int count=0;
//读取数据
while ((count=in.read(by, 0, by.length))!=-1) {
System.out.println(new String(by,0,count));
}
//一定要记得关闭流
in.close();
}
}
7. OutputStream和Writer输入流
7.1 OutputStream类的方法
返回值类型 方法 描述
Void close() 关闭流
Void flush() 强制写出所有缓冲的输出字节
Void write(byte[] b) 指定的 byte 数组写入此输出流
Void write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写 入此输出流
Abstract void write(int b) 将指定的字节写入此输出流
7.2write类的方法
返回值类型 方法 描述
Writer append(char c) 添加指定字符
Writer append(CharSequence csq) 添加指定字符序列
Writer append(CharSequence csq, int start, int end) 添加指定的字符序列的子字符序列
abstract void close() 关闭流
abstract void flush() 强制写出所有缓冲的输出字节
void write(char[] cbuf) 写入字符数组。
abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分
void write(int c) 写入单个字符
void write(String str) 写入字符串
void write(String str, int off, int len) 写入字符串的某一部分。
其实outputStream和Writer输出流的写法基本是一样,区别于操作的数据单元不同
-
OutputStream 类示范
public class Demo2 {
public static void main(String[] args) throws IOException {
String str=“hello OutputStream”;
//创建字节流
OutputStream out =new FileOutputStream(“G:/z/t.txt”);
//输出流
out.write(str.getBytes());
out.flush();
//一定要记得关闭流
out.close();
}} -
Write类示范
public class Demo2 {
public static void main(String[] args) throws IOException {
String str=“hello Writer”;
//创建字符流
Writer out =new FileWriter(“G:/z/t.txt”);
//输出流
out.write(str);
out.flush();
//一定要记得关闭流
out.close();
}
}
3. 简单描述I/O流的各个类和对象序列化