IO流部分记忆体系整理
这篇记录的是FileInputStream、BufferedInputStream
1.FileInputStream【处理字节流。方向:文件向内存】
父类InputStream
FileInputStream类对象下面简写为in
(1)用指定输入流in,接收读取到的文件内容
(2)最后通过close()方法结束读取
(3)字符数组长度问题:
读取到的内容用字符数组chars接收,chars不够长的情况这里没写
代码例子:
package com.cskaoyan.bytestream.in;
import java.io.FileInputStream;
import java.io.IOException;
/***
* 【对比序列】
*
* 【1.】FileInputStream、FileOutputStream 【字节】父类:InputStream、OutputStream
* (1)字节输入流 字节输出流
*
* 【2.】读数据
* 用字节输入流的子类 FileInputStream 加了文件在原类名头
* 创建流对象
* 用这个流对象调用read()方法,读出字节
* 调用read()方法,但是加参数:read(字节数组),读出的是字符
*
* 注意:1.中间变量readCount
* 语句:readCount = in.read(bytes)
* 这里输入流in对象调用read方法,一次性读一长串字节,如果byte放不下,会循环读
*
* 2.中间变量readData
*
* 【3.】创建目录:
* new File(".\\test_root\\").mkdirs();
* 可以创建跟当前项目同目录的文件夹,方便在idea中访问
*
* 【4.】BufferedInputStream、BufferedOutputStream【字节】父类:InputStream、OutputStream
* 指定缓冲字节输入流 指定缓冲的字节输出流
*
* 【5.】利用装饰器模式,使用BufferedInputStream
*
* 【6.】引入字符流
*
* 【7.】OutputStreamWriter、InputStreamReader 【字符】父类:Writer、Reader
* (1)字符输出流 字符输入流
* (2)指定字符集的W 指定字符集的R
* (3)转化流W 转化流R
*
* 【8.】所有这种都算带缓冲,要flush()操作。OutputStreamWriter,以及之前的BufferedInputStream
*
* 【9.】FileWriter、FileReader 【字符】
* (1)简化字符流W 简化字符流R
*
* 【10.】BufferedWriter、BufferedReader 【字符】
* 指定缓冲字符输出流
*
* 【11.】DataOutputStream、DataInputStream
* (1)数据输出流 数据输入流
* 以与机器无关方式从底层输入/出流中读取基本 Java 数据类型
*
* 【12.】打印
*
* 【13.】对象
*/
public class Demo2 {
public static void main(String[] args) throws IOException {
//创建字节输入流对象
FileInputStream in = new FileInputStream("../day16_io01/a.txt");
//读取数据
//readSingle(in);
//readMuti(in);
byte[] bytes = new byte[1024];
int readCount = in.read(bytes, 0, bytes.length);
System.out.println(new String(bytes,0,readCount));
//close
in.close();
}
private static void readMuti(FileInputStream in) throws IOException {
byte[] bytes = new byte[1024];
int readCount = in.read(bytes);
//字节数组转化成字符串
String s = new String(bytes, 0, readCount);
System.out.println(s);
}
private static void readSingle(FileInputStream in) throws IOException {
//read() 返回的是读取到的一个字节值
int readData = in.read();
System.out.println(((char) readData));
int readData2 = in.read();
System.out.println(((char) readData2));
int readData3 = in.read();
System.out.println(((char) readData3));
int readData4 = in.read();
System.out.println(((char) readData4));
int readData5 = in.read();
System.out.println((readData5));
}
}
2.BufferedInputStream【处理字节流。方向:文件向内存】
父类InputStream
BufferedInputStream类对象下面简写为bf
(1)用指定输入流bf,接收读取到的文件内容
(2)最后通过close()方法结束读取
(3)字符数组长度问题:同上,chars不够长的情况这里没写
代码例子:
package com.cskaoyan.bytestream.buff;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class Demo2 {
public static void main(String[] args) throws IOException {
BufferedInputStream br = new BufferedInputStream(new FileInputStream("a.txt"));
//读数据
int readData = br.read();
System.out.println(((char) readData));
//close
br.close();
}
}