什么是IO流
流是一种对正在传输中的数据的一种抽象表现。在流中,文件是一组有序的数据序列。这样我们就可以直接使用流来进行文件在各个内存节点中的相互传输而不是考虑如何通过处理数据来进行文件的互传。
流的分类
按照流的方向进行分类:
以内存作为参照物,
往内存中去,叫做输入。或者叫做读(Read)。
从内存中出来,叫做输出。或者叫做写(Write)。
按照数据在流中的读取方式:
字节流:一次只读一个字节,也就是一个ASC码的大小。
字符流:一次读取两个字节,用来传输一个中文字符。
3.IO流都在java.io.*包下
java中的IO流都已经写好了,我们程序员不需要关心,我们最主要还是掌握,在java中已经提供了哪些流,每个流的特点是什么,每个流对象上的常用方法有哪些?
java中所有的流都是在: java.io.*下。
java中主要还是研究:
怎么new流对象。
调用流对象的哪个方法是读,哪个方法是写。
4.java IO流有四个家族
java.io.InputStream 字节输入流
java.io.OutputStream 字节输出流
java.io.Reader 字符输入流
java.io.Writer 字符输出流
注意: 在java中只要"类名"以Stream结尾的都是字节流。以"Reader/Writer"结尾的都是字符流。
5.java.io包下需要掌握的流有16个
文件:
java.io.FileInputStream
java.io.FileOutputStream
java.io.FileReader
java.io.FileWriter
转换流:(将字节流转换成字符流)
java.io.InputStreamReader
java.io.OutputStreamWriter
缓冲流(将文件进行打包后传输):
java.io.BufferedReader
java.io.BufferedWriter
java.io.BufferedInputStream
java.io.BufferedOutputStream
数据流:
java.io.DateInputStream
java.io.DateOutputStream
标准输出流:
java.io.printWriter
java.io.printStream
对象流:
java.io.ObjectInputStream
java.io.ObjectOutputStream
流的创建与传输
输入流
FileInputStream is=new FileInputStream("C:/Users/Jm/Desktop/Java/doSome.txt");
byte[] b = new byte[1024];
int hasReader = 0;
while((hasReader = fileInputStream.read(b))>0){
System.out.println(new String(b,0,hasReader));
输出流
FileInputStream fis = new FileInputStream("src/main/resources/data/1.txt");
FileOutputStream fos = new FileOutputStream("src/main/resources/data/2.txt");
byte[] b = new byte[1024];
int hasByte = 0;
while((hasByte = fis.read(b)) > 0){
fos.write(b,0,hasByte);
}
缓冲流
bis = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos);
在完成传输后应当尽快关闭流并释放资源
is.close();
os.close();
bis.close()
bos.close();
在html中接收IO流(axios)
import axios from "axios"
axios.get("/data.json").then(res=>{
console.log(res)
}).catch(err=>{
console.log(err)
})