IO流之FileWirter和FileReader
来源:互联网 发布:javascript 进度条 编辑:程序博客网 时间:2024/06/14 00:54
一.FileWriter(文件输出字符流)
FileWriter与FileOutputStream类似,不过FileWriter是字符流,而FileOutputStream是字节流。
构造方法:
1.public File(FIle file)throws IOException------根据File创建FileWriter实例
2.public File(File file,boolean append)throws IOException--------根据File创建FileWriter实例,当append为true 时追加内容到原内容后面
使用示例:
- public static void main(String[] args) {
- File file=new File("L:\\test.txt");
- try {
- //创建一个字符输出流对象,true表示内容追加
- Writer wr=new FileWriter(file,true);
- String info="好好学习,天天向上";
- //向文件中输出
- wr.write(info);
- //关闭流
- wr.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
一.FileReader(文件输入字符流)
FileReader与FileInputStream类似,不过FileReader是字符流,而FileInputStream是字节流。
具体示例:
- public static void main(String[] args) {
- File file=new File("L:\\test.txt");
- try {
- //创建一个字符输入流对象
- Reader in=new FileReader(file);
- //设置指定长度字符数组读取
- char []cs=new char[7];
- StringBuffer sb=new StringBuffer();
- int len=-1;
- //读取文件
- while((len=in.read(cs))!=-1)
- {
- sb.append(new String(cs,0,len));
- }
- System.out.println("文件内容为: "+sb);
- //关闭流
- in.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
运行结果:
此时我们把换成用字节输入流FileInputStream来读取,如下:
- public static void main(String[] args) {
- File file=new File("L:\\test.txt");
- try {
- //创建一个字节输入流对象
- InputStream in=new FileInputStream(file);
- //设置指定长度字节数组读取
- byte []bytes=new byte[7];
- StringBuffer sb=new StringBuffer();
- int len=-1;
- //读取文件
- while((len=in.read(bytes))!=-1)
- {
- sb.append(new String(bytes,0,len));
- }
- System.out.println("文件内容为: "+sb);
- //关闭流
- in.close();
- catch (IOException e) {
- e.printStackTrace();
- }
此时的运行结果出现乱码:
不禁会想,第一种字符读取没有出现乱码,而使用字节读取就出现了乱码。
其实FileReader是在FileInputStream的基础上实现的,看FileReader源码可知。
字符流是按一个个字符为单位来读取,字节流是按一个个字节为单位来读取。所以我们就可以理解为什么字节流读取汉字有时会出现乱码的原因了。在这里是因为我们每次读取7个字节,而一个汉字可能是2个或3个字节组成,要看使用的编码。当我们取了7个字节后使用new String(bytes,0,len)转化为字符串,可能我们获得了一个汉字的不完整字节导致产生乱码。然后我们字节读取是最基础的,是正确的,任何基于字节的操作都是正确的,当我们需要读取的文本有汉字时建议使用字符输入流FileReader防止产生乱码。
- IO流之FileWirter和FileReader
- 【IO流之FileWirter和FileReader】
- IO流之FileReader、FileWriter
- java核心技术之IO流(三)FileReader和FileWriter
- Java-IO之FileReader和FileWriter
- java语言IO流之FileReader
- 黑马程序员---IO流FileReader和 FileWriter
- IO流中FileWriter和FileReader之一
- Java的IO流--FileWriter和FileReader
- java基础之IO流中的FileReader和FileWriter的认识和实现
- 字符输入输出流:java.io.FileReader和java.io.FileWriter
- IO-字符流-FileReader
- io流之file文件类fileReader和FileWriter的读写操作
- Java基础之IO流中使用FileWriter和FileReader实现拷贝文件
- java io系列22之 FileReader和FileWriter
- java io系列22之 FileReader和FileWriter
- java IO流 之 字符流 之 FileReader
- Java IO FileReader和FileWriter
- Generic Programming and the STL笔记2--“不改变操作对象之内容”的算法
- The superiority of the Chinese film faced plywood
- c++头文件
- java.lang.RuntimeException: Exception during suite construction
- 已知函数fun(n),n为三位自然数,判断n是否为水仙花数,并调用函数,并输出!
- IO流之FileWirter和FileReader
- ORACLE数据库Exp、imp以及expdp、impdp以及对exp空表的导出问题
- 加反编译软件
- Java网络编程从入门到精通(34):读写缓冲区中的数据---使用get和put方法按顺序读写单个数据
- 07-自定义QueryParer解决部分查询的性能问题/解决日期和数字范围问题
- CreateCompatibleBitmap的用处
- Android string.xml文件中整型和string型代替以及特殊转义符
- 关于类与对象的理解框图
- button onclick 实现页面跳转