自写小总结
IO/操作
流--->流是一组有顺序的,有起点和终点的字节集合,
是对数据传输的总称或抽象。即数据在两设备
间的传输称为流,流的本质是数据传输,根据
数据传输特性将流抽象为各种类,方便更直观
的进行数据操作。
特点:只能顺序读写数据
不能任意跳转位置读写
分类:----字节流,字符流--I/0
字节存储的是内容,字符存储的是字符
字符流的由来:因为数据编码的不同,而有了对字
符进行高效操作的流对象。本质其实就是基
于“字节流”读取时,去查了指定的码表。
(根据字节编码查字符(指定编码))
字节流:单位是byte(8bit)---一次可读多个字节
---图片,视屏,音频,文件--
直接操作文件(无需缓冲)
字符流:单位是字符----------------------------
处理字符类的数据-------------
什么是字符? 'a' "abc" "123"
输入流只能读(读到CPU)
输出流只能写(写到文件)
----------------------------------------------------
| 字节流 | 字符流 |
----------------------------------------------------
输入流 | InputStream | Reader |
----------------------------------------------------
输出流 | OutputStream | Writer |
----------------------------------------------------
都是抽象类,具体实现:
字节流 FileInputStream FileOutputStream
字符流 FileReader FileWriter
InputStream / OutputStream 字节流抽象父类
FileInputStream / FileOutputStream(File)
传入一个文件(或文件路径)
高级流:都要接入流才能使用:
(那为什么要?高级,优化,快捷)
BufferedInputStream / BufferedOutputStream()
------->缓冲流,提高单字节读写效率
DataInputStream / DataOutputStream
------->固定字节格式,writeInt() writeDouble() writeUTF()
处理速度超级快
思考:字符串转流?流转字符串
(提示:字符串.getBytes()获得字符串字节(ByteArrayInputStream))
字节流转换成字符流可以用 InputSteamReader OutputStreamWriter
转换成BufferdReader BufferedWriter 他们具有缓冲区
----------------------------------------------------------------
PrintStream 任何类型转成字符串 print() println()
----------------------------------------------------------------
Reader / Writer
字符流抽象父类
InputStreamReader / OutputStreamWriter(流)?为什么要流
编码转换流---接入流 InputStream的子类(类似于接口)
FileReader / FileWriter(File)
"转换流"接"文件字节流"
BufferedReader / BufferedWriter
字符缓冲,readLine()
PrintWriter与 PrintStream 相同
后面接字符流或者字节流------PrintStream(低级别只接字节流)
ObjectOutputStream out =
new ObjectOutputStream(相接的流);
可任意操作对象
RandomAccessFile随机读写文件(使用字节)
可任意操作文件
将文件中的字节数据,看做是数组,用下标读写指定位置的字节值
InputStream
int read()throws IOException
从输入流中读取数据的下一个字节
int read(byte b[])throws IOException
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
int read(byte b[], int off, int len)throws
IOException
将输入流中最多 len 个数据字节读入 byte 数组。
将读取的第一个字节存储在元素 b[off] 中,下一个存储在 b[off+1] 中
long skip(long n)throws IOException 跳过和丢弃此输入流中数据的 n 个字节
void close() throws IOException
OutputStream
void write(int b)throws IOException
将指定的字节写入此输出流。write 的常规协定是:向输出流写入一个字节。
要写入的字节是参数 b 的八个低位。b的 24 个高位将被忽略。
void write(byte b[]) throws IOException
将 b.length 个字节从指定的 byte 数组写入此输出流
void write(byte b[], int off, int len) throws IOException
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流
void flush()throws IOException
刷新此输出流并强制写出所有缓冲的输出字节 void close()throws IOException
Reader
int read() throws IOException 读取单个字符
int read(char cbuf[]) throws IOException 将字符读入数组
int read(char[] cbuf,int off,int len)throws IOException 将字符读入数组的某一部分
long skip(long n) throws IOException
void close()
Writer
void write(int c) throws IOException 写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。
void write(char[] cbuf) throws IOException 写入字符数组。
vvoid write(char cbuf[], int off, int len) throws IOException写入字符数组的某一部分。
void write(String str) throws IOException str - 要写入的字符串
Writer append(CharSequence csq) throws IOException 将指定字符序列添加到此 writer。
void close() throws IOException
void flush() throws IOException