IO流
java.io包
1.什么是流?
io流就是java中运输数据的一种载体
它能够把数据从一个地方运输到另一个地方
2.流的分类
a 根据流运输数据的方向<以内存为参考物>
输入流
输出流
b 根据数据传输时转换的类型
字节流 byte
字符流 char
字符流主要运用于纯文本的传输
3.流的体系
以上两种流的分类可以互相组合成下面四种
字节输入流 字节输出流 字符输入流 字符输出流
整个流的体系结构如下
closeable<可关闭的>(close()) flushable<可刷新的>(flush())
inputStream OutputStream Reader Writer
所有的字节输入流都是 inputStream的子类
所有的字节输出流都是 OutputStream的子类
所有的字符输入流都是 Reader的子类
所有的字符输出流都是 Writer的子类
以上4个流都实现了closeable接口
以上2个输出流都实现了flushable接口
4.我们要学习的流<16>
4个文件流<掌握>
FileInputStream
FileOutputStream
FileReader
FileWriter
FileInputStream fis = new FileInputStream("D:/c.txt");
byte [] bytes = new byte[1024];
int temp;
while((temp=fis.read(bytes))!=-1){
System.out.print(new String(bytes,0,temp));
}
fis.close();
/*
* 文件输出流如果指向的文件不存在
* 则会自动创建一个
*/
FileOutputStream fos = new FileOutputStream(“D:/a.txt”);
String info = "许俊皇是个皇军";
//把数据转成byte数组《String-->数组》
byte [] bytes = info.getBytes();
//fos.write(bytes);
fos.write(bytes,0,12);
//刷新 强制写入
fos.flush();
fos.close();
public static void main(String[] args) {
FileReader fr=null;
FileWriter fw=null;
try {
fr=new FileReader("D:\\b.txt");
fw=new FileWriter("D:\\c.txt");
char [] bytes=new char[100];
int i;
while((i=fr.read(bytes))!=-1) {
fw.write(bytes,0,i);
}
fw.flush();
}catch(IOException e){
e.printStackTrace();
}finally {
if(fr!=null) {
try {
fr.close();
}catch(IOException e) {
e.printStackTrace();
}
}
if(fw!=null) {
try {
fw.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
FileInputStream file1 = null ;
FileOutputStream file2 = null;
try {
byte[] bytes = new byte[1024];
int a;
while((a=file1.read(bytes))!=-1){
file2.write(bytes,0,a);
}
file2.flush();
}catch(IOException e){
e.printStackTrace();
}finally {
if(file1 != null) {
try {
file1.close();
}catch(IOException e){
e.printStackTrace();
}
}
if(file2 != null) {
try {
file2.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
4个缓冲流<掌握>
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("D:/b.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
String temp;
while((temp=br.readLine())!=null){
System.out.println(temp);
}
br.close();
}
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("D:/b.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("哈哈哈 许俊黄");
bw.newLine();
bw.write("哈哈哈 张建兵");
bw.write("哈哈哈 许俊慌");
bw.flush();
bw.close();
}
2个转换流<掌握>
InputStreramReader
OutputSTreamWriter
2个打印流<掌握>
PrintWriter
PrintStream
2个数据流
DataInputStream
DataOutputStream
序列化与反序列化流
ObjectInputStream
ObjectOutputStream
java.io.File: 表示文件和文件夹类
File不是流 不能直接操作文件