IO流
体系结构图

文件
创建文件三种方式:

//文件名创建
String fileName= "D:\\again_java\\hello.txt";
File file = new File(fileName);
//文件+文件名
File parentFile = new File("D:\\again_java\\");
String fileName= "hello1.txt";
File file = new File(parentFile,fileName);
//文件前缀名+文件名
String parentFile="D:\\again_java\\";
String fileName= "hello2.txt";
File file = new File(parentFile,fileName);
文件常用方法
getName 获取名字
getAboslutePath 绝对路径
getParent 文件父级目录
getlength 文件字节大小

目录方法

io流

流的分类
按操作数据单位分: 字节流 字符流
按数据流的流向分:输入流,输出流
按流的角色不同分:节点流,处理流、包装流
###io 流体系图

定义 byte数组 空间
read(byte【】)方法 一个中文3个字节 一个字符一个字节
new String(byte,0,length)

FileOutputStream 文件字节输出流
write(String.getbytes()) 写入
write(byte[],0,length)
String.getbytes() 转字节
new FileOutputStream(文件名,true) 追加的内容后面
new FileOutputStream(文件名) 直接覆盖内容

文件字节读写操作 文件拷贝读写操作
FileinPUTsTREAM
FileOUTPUTsTREAM
结合使用

字符流 FileReader 和 FileWriter
read()单个读取字符 -1读完
read(char[])批量读取多个字符到数组 -1读完


FileReader dmeo测试
read()
read(char[]) 字符数组
new String(char,0,readBitlen) 输出

FileWriter demo测试
write(int) 写入单个字符
write(char[]) 写入字符数组
write(char[],off,len)写入指定的字符数组
write(string)写入整个字符串
write(string,off,len)写入指定的字符串
使用 字符输出流 必须关闭流 或者 flush 刷新 生效

节点流处理流
节点流 某一条特定的流
处理流(包装流) 连接在已经有的流上
例如:bufferReader BufferWriter 里面包含了 Reader或者Writer类 只有有子类都可以使用
优点:增加缓冲方式提高输入输出流的效率
操作的便捷,提供了方法来一次输入大批量数据
源码采用了修饰器模式

BufferedReader缓冲输入流
读取结果是string 判断读取完毕是 null
while ( (readData=bufferedReader.readLine())!=null)

BufferedWriter缓存输出流
和FileWriter 一样 记得关闭流

字符缓冲流 读写操作
注意 读是readLine 判断是 !=null 返回结果 String

字节缓冲流 读写操作
和上述一样

主要保存 数据和数据类型 必须实习序列化 ,反序列化
文件名格式为 .dat后缀

objectOutStream
必须使用 .dat 文件 必须序列化

必须和序列化的顺序保持一致 否则出错
如果序列化有对象 readObject 然后向下转型 使用

注意事项

标准输入输出流
System.in 键盘 输入流 运行类 缓冲输入流
Sytem.out 显示屏 输出流 printStream流
转换字符流(可以改编码格式)
InputStreamReader,InputStreamWriter
OutputStreamReader,OutputStreamWriter

FileOutputStream转成OutputStreamWriter

评论