IO字符流
来源:互联网 发布:帝国cms图片集分割 编辑:程序博客网 时间:2024/04/30 04:34
一.字符流
1.字符流是什么
字符流是可以直接读写字符的IO流
字节流只能读写字节.如果要读取字符,就要先读取到字节数据,然后转为字符.如果要写出字符,需要把字符转为字节再写出.
2.FileReader,FileWriter
FileReader类的read()方法可以按照字符大小读取
1、循环读出里面的字符
FileReader fr =new FileReader("aaa.txt");int ch;while((ch = fr.read())!=-1){System.out.print((char)ch);}fr.close(); FileWriter fw = new FileWriter("bbb.txt");fw.write("fighting,努力,123,%%^&");fw.close();
;
FileWriter类的write()方法可以自动把字符转为字节写出
实现读写操作:
方式一
FileReader fr = new FileReader("aaa.txt");FileWriter fw = new FileWriter("bbb.txt");int ch;while ((ch = fr.read())!=-1){fw.write(ch);}fr.close();fw.close();
方式二
FileReader fr = new FileReader("day21笔记.txt"); FileWriter fw = new FileWriter("copy.txt"); char [] arr = new char[1024]; int len; while((len = fr.read(arr))!=-1){ fw.write(arr,0,len);
方式三
BufferedReader br = new BufferedReader(new FileReader("day21笔记.txt"));BufferedWriter bw = new BufferedWriter(new FileWriter("copy.txt"));int len;while((len = br.read())!=-1){bw.write(len);}br.close();bw.close();
3.什么情况下使用字符流
字符流也可以拷贝文本文件,但不推荐使用.因为读取时会把字节转为字符,写出时还要把字符转回字节.(拷贝文件的时候建议使用字节流)
字符流作用:
1、只读因为通过编码表按照一个字符一个字符的读取,不会出现半个中文。
2、只写可以直接写出字符串
程序需要读取一段文本,或者需要写出一段文本的时候可以使用字符流
4.带缓冲的字符流
BufferedReader的read()方法读取字符时会一次读取若干字符到缓冲区,然后逐个返回给程序,降低读取文件的次数,提高效率
BufferedWriter的write()方法写出字符时会先写到缓冲区,缓冲区写满时才会写到文件,降低写文件的次数,提高效率
写满空间的时候调用flush()方法,close()关闭流之前调用flash刷新剩下的数据;
BufferedReader的readLine()方法可以读取一行字符(不包含换行符号)
BufferedWriter的newLine()可以输出一个跨平台的换行符号"\r\n"
BufferedReader br = new BufferedReader(new FileReader("day21笔记.txt"));BufferedWriter bw = new BufferedWriter(new FileWriter("copy.txt"));String str;while((str = br.readLine())!=null){bw.write(str);//bw.write("\r\n");bw.newLine();}
5.LineNumberReader
LineNumberReader是BufferedReader的子类,具有相同的功能,并且可以统计行号
调用getLineNumber()方法可以获取当前行号
调用setLineNumber()方法可以设置当前行号
6.使用指定的码表读取字符
FileReader是使用默认码表读取文件,如果需要使用指定码表读取,那么可以使用InputStreamReader(字节流,编码表)
FileWriter是使用默认码表写出文件,如果需要使用指定码表写出,那么可以使用OutputStreamWriter(字节流,编码表)
二.今日重点
1.会用BufferedReader读取GBK码表和UTF-8码表的字符
2.会用BufferedWriter写出字符到GBK码表和UTF-8码表的文件中
3.会使用BufferedReader从键盘读取一行
4.会用字节数组拷贝文件,会用BufferedInputStream和BufferedOutputStream拷贝文件
flush 和close的区别
1、flash方法可以将缓冲区的数据刷到文件上,调用之后还可以继续调用写的方法
2、close方法可以关闭流,在关闭流之前会将缓冲区的中的有效字符刷出来,然后在关闭,如果不关闭就不能再调用写的方
使用流对象尽量使晚开早关
* 设计模式之装饰设计模式 //实现包装 */public static void main(String[] args) {Student s = new Student();// 学生类开始有的功能s.code();ItcastStudent is = new ItcastStudent(new Student());is.code(); //学生包装后的功能}}interface Coder {public void code();}class Student implements Coder {@Overridepublic void code() {System.out.println("javase");System.out.println("javaweb");}}class ItcastStudent implements Coder {private Student s;public ItcastStudent(Student s) {this.s = s;}@Overridepublic void code() {s.code();System.out.println("ssh");System.out.println("安卓");System.out.println("ios");System.out.println("数据库");System.out.println("............");}}
- 字符IO&数据流IO&对象流IO
- IO流-字符流
- IO流-字符流
- IO流--字符流
- java IO(字符流)
- IO之字符流
- IO(3) 字符流
- IO字符流
- IO字符流
- IO之字符流
- IO二:字符流
- IO之字符流
- IO 字符流学习
- IO字符流
- IO字符流总结
- Java Io 字符流
- IO-字符流
- Java 字符流 IO
- Win7/xp/vista配置Turbulenz游戏引擎环境
- IO字节流
- Android RSA加密解密
- 后代选择器与过滤选择器的区别
- iBATIS使用$和#的一些理解
- IO字符流
- jsp传值给servlet乱码问题
- 【Android SDK开发】各种Android Dialog创建及其监听事件实现
- Oracle EBS 术语解释-中文版
- 一个西电的ACM竞赛题想到的 part2
- Java中a=a+b 与 a+=b区别 以及和类型转换的关系
- IO序列输入输出流
- 百度地图之定位数据
- 兼容 谷歌、火狐、360系列浏览器的桌面通知(实用)