Java学习笔记29(IO字符流,转换流)
时间:2019-03-25
本文章向大家介绍Java学习笔记29(IO字符流,转换流),主要包括Java学习笔记29(IO字符流,转换流)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
字符流:只能操作文本文件,与字节流的区别是,字节流是按照字节来读取文件,而字符流是按照字符来读取,因此字符流的局限性为文本文件
字符输出流:Write类,使用时通过子类 每一次写入都要刷新
package com.zs; import java.io.FileWriter; import java.io.IOException; public class Demo3 { public static void main(String[] args) throws IOException { FileWriter fw=new FileWriter("d:\\c.txt"); fw.write(101);//输入数字自动编码 fw.flush();//字符流每次操作都要使用flush方法刷新 char[] ch={'a','b','c'}; fw.write(ch);//输入数组,写字符数组 fw.flush(); fw.write(ch,0,2);//写部分字符数组选则的字符 fw.write("hello java");//可以直接写字符串 fw.close(); } }
字符输入流:Reader类,通过子类
package com.zs.Demo2; import java.io.FileReader; import java.io.IOException; public class Demo2 { public static void main(String[] args) throws IOException { FileReader fr=new FileReader("d:\\c.txt"); int len=0; while((len=fr.read())!=-1){//一个字符一个字符的读 System.out.println((char)len); } fr.close(); FileReader fr1=new FileReader("d:\\c.txt"); char[] c=new char[1024];//用字符数组读数据,加快速度 while((len=fr1.read(c))!=-1){ System.out.println(new String(c,0,len)); } fr.close(); } }
复制文件:与字节流相似,需要注意每次写入后都要刷新
package com.zs.Demo2; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class CopyFileByChar { public static void main(String[] args) { FileReader fr=null; FileWriter fw=null; try { fr=new FileReader("d:\\c.txt"); fw=new FileWriter("e:\\c.txt"); int len; char[] c=new char[1024]; while((len=fr.read(c))!=-1){ fw.write(c,0,len);
fw.flush(); } } catch (IOException e) { throw new RuntimeException("复制失败"); }finally { if (fw != null) { try { fw.close(); } catch (IOException e) { throw new RuntimeException("释放资源失败"); }finally { if (fr != null) { try { fr.close(); } catch (IOException e) { throw new RuntimeException("释放资源失败"); } } } } } } }
转换流:字符流和字节流之间的桥梁
OutputStreamWriter类:字符转字节
package com.zs.Demo2; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; public class CharToByte { public static void main(String[] args) throws IOException { FileOutputStream fo=new FileOutputStream("d:\\d.txt"); //OutputStreamWriter(字节流对象,编码格式); OutputStreamWriter fw=new OutputStreamWriter(fo,"utf-8"); fw.write("你好");//这里本来d盘时字节流输入的,可以使用字符流输入字符串; fw.close(); } }
InputStreamReader:字节转字符
package com.zs.Demo2; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; public class ByteToChar { public static void main(String[] args) throws IOException { FileInputStream fi=new FileInputStream("d:\\d.txt"); InputStreamReader fr=new InputStreamReader(fi,"utf-8"); char[] c=new char[1024]; int len=0; while((len=fr.read(c))!=-1){ System.out.println(new String(c,0,len));//你好 } } }
注意读取文本的编码格式要一致
- React项目配置5(引入MockJs,实现假接口开发)
- POj 1611 The Suspects
- React项目配置4(如何在开发时跨域获取api请求)
- Laravel-博客实战+踩坑laravel-blog最终的效果踩的坑
- React项目配置3(如何管理项目API接口)
- React第三方组件3(状态管理之Flux的使用④TodoList下)
- React第三方组件3(状态管理之Flux的使用③TodoList中)
- Vue实现百度下拉提示搜索一、前期准备二、代码实现三、实现效果
- React第三方组件3(状态管理之Flux的使用②TodoList上)
- ggplot2玫瑰图案例——星巴克门店分布图
- React第三方组件3(状态管理之Flux的使用①简单使用)
- 用ggplot2画了一个我也叫不上名的炫酷图表
- React技巧8(不再手动绑定this,跟.bind(this)说88)
- 美美的商务范儿——ggplot2蝴蝶图
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 科研SCI论文图片基础知识详解
- vue3.0的异步更新原理
- 小白学PyTorch | 10 pytorch常见运算详解
- vuex的基础知识点
- 小白学PyTorch | 11 MobileNet详解及PyTorch实现
- 小白学PyTorch | 12 SENet详解及PyTorch实现
- 重拾前端技能为你的职业前程保驾护航
- input切换显示与隐藏,歘~
- 小白学PyTorch | 13 EfficientNet详解及PyTorch实现
- Java 比较两个字符串内容是否相等
- 前端模块化发展史
- 前端性能优化
- 突击并发编程JUC系列-原子更新AtomicLong
- Windows下指定的服务已经标记为删除”
- 《剑指offer》第29天:m x n 网格的最小路径和