IO流(二)字符流
2015-08-09 21:57
141 查看
1.字符流:在字节流的基础上添加了编码机制。很大程度上和字节流操作一样的,字符流只能操作文本类文件,准确的说应该是纯文本类文件。例如.txt,.java,.cpp,.html等
编码:每一个国家都有自己的编码,编码不一致往往导致的结果就是!!乱码!!。中国编码的编码:gbk
gbk:英文字母:1个字节,中文:2个字节,系统的默认编码。
unicode:统一编码。中文还是英文字母都是占2个字节。
utf-8: 国际编码。英文占1个字节,中文占3个字节。
文件是用什么编码来写的,那么就用什么编码来读取。最常用的编码是gbk和utf-8.一般的情况下,都设置为utf-8.(还有其他的很多编码:例如GB2312,big5等等)。如果想测试是否像上面所说那么多个字节的话,建议使用Notepad2文本软件,体积小功能强!(似乎再买广告了。。。)
Reader:读取数据
FileReader:文件读取字符流
BufferedReader://带缓冲区的字符输入流
readLine() ;读取一行数据
LineNumberReader;带行号.通过getLineNumber()方法获取行号
转换流示例二
编码:每一个国家都有自己的编码,编码不一致往往导致的结果就是!!乱码!!。中国编码的编码:gbk
gbk:英文字母:1个字节,中文:2个字节,系统的默认编码。
unicode:统一编码。中文还是英文字母都是占2个字节。
utf-8: 国际编码。英文占1个字节,中文占3个字节。
文件是用什么编码来写的,那么就用什么编码来读取。最常用的编码是gbk和utf-8.一般的情况下,都设置为utf-8.(还有其他的很多编码:例如GB2312,big5等等)。如果想测试是否像上面所说那么多个字节的话,建议使用Notepad2文本软件,体积小功能强!(似乎再买广告了。。。)
Reader:读取数据
FileReader:文件读取字符流
BufferedReader://带缓冲区的字符输入流
readLine() ;读取一行数据
LineNumberReader;带行号.通过getLineNumber()方法获取行号
package com.java.homework; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; /* * 1:获取键盘录入的数据,将数据写到文件中,但是以utf-8编码的形式写到文件中去。 */ public class HomeWork1 { public static void main(String[] args) { BufferedReader br = null; BufferedWriter bw = null; try { br = new BufferedReader(new InputStreamReader(System.in)); bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("e:\\aa.txt"), "utf-8")); String str = ""; while(true){ str = br.readLine(); if("exit".equals(str)){ //可以尝试不同的编码 OutputStreamWriter osw = new OutputStreamWriter(System.out, "GBK"); BufferedWriter bw2 = new BufferedWriter(osw); bw2.write("输入结束!"); bw2.flush(); break; } bw.write(str); bw.newLine(); bw.flush(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { bw.close(); br.close(); } catch (IOException e) { e.printStackTrace(); } } } }
转换流示例二
相关文章推荐
- Hadoop 新增删除节点
- Cross Platform Note: STD C++ Preprocessor directives & pre-defined macros
- 零基础学python-1.5 第一个程序
- poj2524 并查集
- 计蒜客 难题题库 021 最大子阵列
- 0-1背包问题
- ==和equals()的区别
- 开发者,你是如何做到高效开发的
- 动态连接库 DLL 解释
- OpenCV的支持向量机SVM的程序
- java的反射原理与Spring的自动注入(转载)
- Java的垃圾回收机制笔记
- 2015阿里移动推荐算法大赛总结
- 2015华为校园招聘机试题+1道2013年网易校园招聘笔试题
- 回调函数中调用类中的非静态成员变量或非静态成员函数
- N皇后问题
- git学习之旅(六)——github远程服务器
- poj 2586 Y2K Accounting Bug
- 计算机视觉的主页、博客清单
- Java图形化界面