java基础笔记之IO流之字符流

知识点:
字符流:是直接读取字符的IO流
字符输入流:Reader: 读的时候,是把字节转成字符,然后再读取
FileReader://字符输入流

BufferedReader:
特有方法:
public String readLine(); 一次读取一行,读不到返回null,读到就返回对应的数据(String类型)

LineNumberReader://行号
setLineNumber():设置行号
getLineNumber():获取行号


字符输出流: Writer 有一个 2k的小缓冲区不关流会将内容写到缓冲区内,关闭流之后,就会刷新出来
FileWriter://字符输出流,在写出时,有一个缓冲区
FileWriter fw = new FileWriter(文件路径);
fw.write(字符串/单个字符);
BufferedWriter:
public void newLine() ; //根据当前的操作系统,给出对应的换行符.

设计模式 :
概述 :
实际开发中,我们发现项目中好多地方是相似的,我们就把这些相似的内容抽取出来定义成:模型. 这样,按照模型做出来的东西就是具备某些功能,或者实现了某些需求的,这些模型,就是:设计模式.
设计模式: 一种23种. //记忆
推荐一个人和一本书: 闫闳. UML统一建模语言.
分类:

创建型: 就是需要创建对象的.
单例设计模式, 工厂设计模式.
结构型: 指的是类与类之间的关系.
装饰设计模式, 适配器设计模式.
行为型: 指的是类能做什么.
模板方法设计模式.
装饰设计模式: //记忆
步骤:
1: 获取被装饰类的引用.
2: 将被装饰类的对象作为参数传递给 装饰类的构造方法.
3: 对原有的功能进行升级.
好处:
降低了耦合性,被装饰类的改变与装饰类无关.
转换流:
InputStreamReader: / /是字节流通向字符流的桥梁
public InputStreamReader(InputStream is,String charsetName);
OutputStreamWriter: //是字符流通向字节流的桥梁
public OutputStreamWriter(OutputStream is,String charsetName);
递归:
概述: 方法自己调用自己.
好处: 不用知道循环次数.
注意事项:
1: 递归必须要有出口,否则容易导致栈内存溢出.
2: 递归的调用次数不能过多,否则容易导致栈内存溢出.
3: 构造方法不能递归调用.
要搞定递归,只需要搞定四个字就OK了: 出口,规律.
补充内容:
1: 将字符串转换成其对应的 不同码表的字节数组.
String str = "你!@好32";
byte[] bys = str.getBytes("utf-8"); //小括号中写的是码表的名字,不区分大小写
//中文的第一个字节都是 负数. 在gkb码表中占两个字节,在utf-8码表中占三个字节.
System.out.println(Arrays.toString(bys));
[-28, -67, -96, 33, 64, -27, -91, -67, 51, 50]

2.拷贝纯文本文件的方式:
1: 用普通的字符流一次读写一个字符.

2: 用普通的字符流一次读写一个指定长度的字符数组.

3: 用高效的字符流一次读写一个字符.

4: 用高效的字符流一次读写一个指定长度的字符数组.

5: 用高效的字符流一次读写 一行数据. //必须重点掌握

递归: 方法自己调用自己
好处:
不用知道次数
注意事项:
1.递归必须有出口,否则容易导致内存溢出
2.递归调用次数

弊端:
次数过多会造成内存溢出
构造方法能用递归吗?
构造方法不能使用递归调用
递归调用是否必须有返回值?
不一定,看需求,


面试题:
1: Writer 类, 字符高效流( BufferedRreader , BufferedWriter ), 字节高效流( BufferesInputStream , BufferesOutputStream *)的内置缓冲区的大小分别是多少?
2KB. 16KB(8192个字符) 8KB(8192个字节)

2: 什么时候使用字符流?
只读或者只写 纯文本文件的时候可以考虑使用字符流.
/*
当一个文件能用微软自带的记事本打开,并且里边的内容你也能看得懂的时候,就可以使用字符流拷贝.
//拷贝纯文本文件的时候推荐使用字符流.
*/

3: 字符流是否可以拷贝非纯文本文件?
不可以拷贝.

4: readLine()和newLine()的作用是什么? 是哪个类中的方法?
readLine():BuferedReade里的,读取一行
newLine():BufferesWriter里的,换行
5: 字节流通向字符流的桥梁是?
InputStreamReader.
6: 字符流通向字节流的桥梁是?
OutputStreamWriter

7: 进行递归的方法,必须有返回值吗?
不一定,看需求.
8.nextLine()与\r\n的区别?
newLine():是跨平台的换行,属于bufferedReader
"\r\n":只支持Windows的换行


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值