当使用字节流读取文件时,遇到中文字符时,可能不会显示完整的字符,因为一个中文字符可能占用多个字节储存。所以java提供一些字符流类,以字符为单位读写数据,专门处理文本文件

一个汉字储存:

GBK编码:占用2个字节

UTF-8编码:占用3个字节

字符输入流Reader:

java.io.Reader抽象类:用于读取字符流的所有类的超类,可以读取字符信息到内存中。

int read():读取单个字符并返回

int read(char[] cbuf ):一次读取多个字符,将字符读入数组

void close():关闭该流并释放与之关联的所有资源

文件输入流:

java.io.FileReader:文件字符输入流,把文件中的字符读取到内存中

构造方法:

FileReader(String fileName)

FileReader(File file)

fileName:文件路径 FIle:文件

使用:

1、创建FileReader对象,构造方法中绑定要读取的数据源

2、使用FileReader对象中的方法read读取文件

3、释放资源

一次读取一个字符

FileReader fr=new FileReader("C:\\Users\\暮色年华\\Desktop\\a.txt");
int len=0;
while((len=fr.read())!=-1){System.out.print((char)len);}
fr.close();

一次读取多个字符

String(char[] value,int offset,int len):把字符数组的一部分转换为字符串

FileReader fr=new FileReader("C:\\Users\\暮色年华\\Desktop\\a.txt");
char[]cs=new char[1024];
int len=0;
while((len=fr.read(cs))!=-1){System.out.println(new String(cs,0,len));
}
fr.close()

 字符输出流:

OutputStreamWriter:

文件字符输出流:

FileWriter(String FileName,boolean append)

FileWriter(File file,boolean append)

 一次写入一个字符

FileWriter fw=new FileWriter("C:\\Users\\暮色年华\\Desktop\\a.txt");
fw.write(97);
fw.flush();
fw.write(98);
fw.close();

写入字符后,必须先刷新,才能写入到文件中去

void flush():刷新流   flush调用可以进行写数据

void close():关闭流,先刷新  close调用后不能继续写数据


一次写入多个字符

FileWriter fw=new FileWriter("C:\\Users\\暮色年华\\Desktop\\a.txt");
char[] chs={'a','b','c'};
fw.write(chs);
fw.close();

一次写入一个字符串

 FileWriter fw=new FileWriter("C:\\Users\\暮色年华\\Desktop\\a.txt");String s="asdc";fw.write(s);fw.close();

字符流的续写和换行

续写:append参数设为TRUE

换行:换行符

使用try..catch...finally处理流中的异常

JDK9:try前边可以定义流对象,在try后边的()中可以直接引用流对象的名称(变量名)

在try代码执行完毕之后,流对象也可以释放掉,不用写finally

【Java笔记】IO流(2):字符流相关推荐

  1. java基础学习_IO流03_字符流、IO流小结、案例_day21总结

    java基础学习_IO流03_字符流.IO流小结.案例_day21总结 ================================================================ ...

  2. java io流(字符流) 文件打开、读取文件、关闭文件

    java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*;public class Index{public stati ...

  3. java之高级的IO流,字符流与字节流

    IO流 今日内容介绍  标准输入流 & 转换流 & 打印流  对象操作流  Properties集合 第1章标准输入流 & 转换流 & 打印流 1.1标准输入输出 ...

  4. Java基础IO流之字符流的使用

    ☆引言☆ 大家好,我是痛而不言笑而不语的浅伤.IO流分为字节流和字符流,而上一篇文章我们学习了字节流(Java基础IO流之字符流的使用),这篇文章带大家一起来学习字符流吧.对文章中描述错误的希望大家积 ...

  5. Java18-day09【字节缓冲流、字符流、编码表、字符串与字符流中的编码解码问题、字符流读写数据的方式、字符缓冲流、IO流小结】

    视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java ...

  6. IO流的字符流+对象流+打印流+内存流+随机访问流(2)

    IO流的字符流+对象流+打印流+内存流+随机访问流(2) 一.字符流 1.利用字符输出转换流 向文件写入数据 1.文件存在的情况 2.文件不存在的情况 经验:所有的输出流,当文件不存在时都会创建文件 ...

  7. JAVA SE学习day_06:字符流、异常处理

    一.字符流 java将流按照读写单位划分为字节流与字符流 字节流:超类为InputStream和OutputStream,读写单位为字节 字符流:超类为Reader和Writer,读写单位为cahr ...

  8. IO流 (三) ----- 字符流和字符缓冲流

    相关文章: <IO流 (一) ----- 基本概念和File类> <IO流 (二) ----- 文件流> <IO流 (三) ----- 字符流和字符缓冲流> < ...

  9. java day20【字节流、字符流】

    第一章 IO概述 1.1 什么是IO 生活中,你肯定经历过这样的场景.当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了.当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里.那 ...

  10. 01-21 IO流(字符流与字节流)

    IO流(字符流与字节流) 今日内容介绍  标准输入流 & 转换流 & 打印流  对象操作流  Properties集合 第1章标准输入流 & 转换流 & 打印流 ...

最新文章

  1. ZigBee 裸机 uart 配置
  2. mysql php commit_php mysqli_autocommit()使用实例
  3. fcntl函数(网络编程会用)
  4. lambda表达式 java 效率_Java8新特性效率之Lambda
  5. struts2 url传参中文乱码
  6. 钉钉日志范文100篇_钉钉的日志模板怎么修改 钉钉日志模板修改教程
  7. UmiJS 是一个 react 开发框架
  8. 程序员——知识 [转载]
  9. RNN 卷积神经网络- 吴恩达Andrew Ng 论文等资料汇总
  10. chrome浏览器强制采用https加密链接
  11. (十三)office2016-excel提取出生年月
  12. python控制小爱同学_神秘鸭,用Siri小爱同学语音助手控制你的电脑
  13. Js逆向教程-10常见代码混淆
  14. win10 EFI文件夹删除了,引导进不去了,该怎么办?
  15. 网络电源控制器(智能PDU)是什么设备?
  16. Cppcheck 1.54 C/C++静态代码分析工具
  17. 关于缓存一致性的一些介绍
  18. 企业为什么需要一套固定资产管理系统?
  19. 软件开发模型之装修篇
  20. littlevGL:字体与汉字

热门文章

  1. Bailian4141 砝码称重【DP】
  2. UVA10946 You want what filled?【DFS】
  3. UVA152 Tree's a Crowd【暴力+最值】
  4. 百练(九~十二)题解
  5. HDU1248 寒冰王座【0/1背包+DP】
  6. NUC1157 To the Max【最大子段和+DP】
  7. HDU1597 find the nth digit【模拟】
  8. Spring boot 搭建
  9. plink 与 ssh 远程登录问题
  10. VS2013——error C4996: 'std::_Uninitialized_copy0':