一、I/O流的分类
按流向分:
输入流
输出流
按数据类型分:
字节流:
字节输入流 InputStream(抽象类)
字节输出流 OutputStream(抽象类)
字符流:
字符输入流 Reader
字符输出流 Writer
注意:I/O默认按照数据类型分类
二、读写数据
三、字节流
1、往文件中写入数据步骤:
(1)创建字节输出流对象
字节输出流 OutputStream为抽象类,所以要创建对象的话就要使用其子类FileOutputStream
(2)调用写数据的方法
(3)释放资源
2、FileOutputStream构造方法
FileOutputStream(File file)
FileOutputStream(String name)
package com.edu.io;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) throws IOException {
/*创建字节输出对象
这个操作做了两件事
(1)创建了一个文件输出流fos,指向文件a.txt
(2)创建了a.txt这个文件
*/
FileOutputStream fos = new FileOutputStream("c.txt");
//创建字节数组
String s = "hellojava";
byte[] bytes = s.getBytes();
fos.write(bytes);
//关闭流关闭流之后就无法再对这个字节流进行操作
fos.close();
}
}
3、FileOutputStream写数据的方法
write(byte[] b)
write(int b) :一次写一个字节
write(byte[] b, int off, int len) :一次写一个字节数组的一部分
4.字节输入流
操作步骤:
创建字节输入流对象
调用方法读取数据
释放资源
package com.edu.io;
import java.io.FileInputStream;
import java.io.IOException;
public class FileDemo2 {
public static void main(String[] args) throws IOException {
//创建字节输入流对象
FileInputStream file = new FileInputStream("a.txt");
//调用方法读取数据
int len;
while ((len=file.read())!=-1) {
//读取的时候读出来的实际是这些字符对应的ASCII值,所以要是用强转转换成字符型
System.out.println((char)len);
}
//关流
file.close();
}
}
5、将一个文本中内容复制到另一个文本中
package com.edu.io;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* A:把a.txt的内容复制到b.txt中
*
* */
public class FileCopyDemo {
public static void main(String[] args) throws IOException {
//a.txt为目标源,b.txt为目的地
FileInputStream fis = new FileInputStream("a.txt");
FileOutputStream fos = new FileOutputStream("b.txt");
//复制数据
byte[] bys = new byte[1024];
int len;
while ((len=fis.read(bys))!=-1) {
fos.write(bys, 0, len);
}
//释放资源
fos.close();
fis.close();:高效字节流一次读写一个字节数组
}}
6、字节缓冲区流(也叫高效流)
BufferedInputStream(InputStream in)
方法:
read() 一次读取一个字节,
read(byte[] b,int off,int len); 返回实际读取长度,数据被读取到数组中。
BufferedOutputStream(OutputStream out)
方法:write(byte[] b,int off,int len)
高级流:是操作基本流的流。
7、流
低级流: 基本的流,可以直接操作文件。高级流:是操作基本流的流。