字符流:读写字符的

顶级父类是Reader和Writer

操作流程

在Java中IO操作也是有相应步骤的,以文件操作为例,主要的操作流程如下:

  1. 使用File类打开一个文件
  2. 通过字节流或字符流的子类,指定输出的位置
  3. 进行读/写操作
  4. 关闭输入/输出

思维导图

相关练习代码。

 /**
* Date : 2017/7/1
* Author : Hsj
* Description :字符流知识总结
*/
public class Demo2 { //可以读取字符
@Test
public void fun() throws IOException {
FileReader fr = new FileReader("zzz.txt");
int read = fr.read();
System.out.println(read);
char c = (char) read;
System.out.println(c);
fr.close();
} //连续读取文字
@Test
public void fun2() throws IOException {
FileReader fr = new FileReader("zzz.txt");
int len;
while ((len = fr.read()) != -1) {
System.out.print((char) len);
}
fr.close();
} //文字写入
@Test
public void fun3() throws IOException {
FileWriter fw = new FileWriter("kk.txt");
fw.write("我是胡少君,你在哪里");
fw.close();
} //字符拷贝
@Test
public void fun4() throws IOException {
FileReader fr = new FileReader("kk.txt");
FileWriter fw = new FileWriter("xxx.txt");
int len;
while ((len = fr.read()) != -1) {
fw.write(len);
}
fr.close();
fw.close();//有一个小的缓冲区不关流写不进去
} //自定义数组的拷贝
@Test
public void fun5() throws IOException {
FileReader fr = new FileReader("kk.txt");
FileWriter fw = new FileWriter("kj.txt");
char[] chars = new char[1024 * 8];
int len;
while ((len = fr.read(chars)) != -1) {
fw.write(chars, 0, len);
}
fr.close();
fw.close(); } @Test
//缓冲字符流
public void fun6() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("kj.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("hsj.txt"));
int len;
while ((len = br.read()) != -1) {
bw.write(len);
}
br.close();
bw.close();
} //读取一行
@Test
public void fun7() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("hsj.txt"));
String s;
while ((s = br.readLine()) != null) {//一行一行的读取文件
System.out.print(s);
}
br.close();
} //添加换行符
@Test
public void fun8() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("hsj.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("lyb.txt"));
String s;
while ((s = br.readLine()) != null) {
bw.write(s);
bw.newLine();//换行
}
br.close();
bw.close(); } //文本反转
@Test
public void fun9() throws IOException {
List<String> slist = new ArrayList<>();
BufferedReader br = new BufferedReader(new FileReader("hsj.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("tran.txt"));
String s;
while ((s = br.readLine()) != null) {
slist.add(s);
} for (int i = slist.size() - 1; i >= 0; i--) {
bw.write(slist.get(i));
bw.newLine();
}
bw.close();
br.close();
} // LineNumberReader的使用
@Test
public void fun10() throws IOException {
LineNumberReader lnr = new LineNumberReader(new FileReader("hsj.txt"));
String line;
while ((line = lnr.readLine()) != null) {
System.out.println(lnr.getLineNumber() + ":" + line); }
lnr.close();
}
}

IO流之字符流知识总结的更多相关文章

  1. java IO流 之 字符流

    字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...

  2. JAVA IO 字节流与字符流

    文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节.     ...

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

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

  4. io系列之字符流

    java中io流系统庞大,知识点众多,作为小白通过五天的视频书籍学习后,总结了io系列的随笔,以便将来复习查看. 本篇为此系列随笔的第一篇:io系列之字符流. IO流 :对数据的传输流向进行操作,ja ...

  5. Java IO 字节流与字符流 (五)

    Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,然后再输出到另一个文件中.而字 ...

  6. JAVA之IO流(字符流)

    字符流InputStreamReader和OutputStreamWriter是Writer和Read的子类:是字节流通向字符流的桥梁,也就是可以把字节流转化为字符流. InputStreamRead ...

  7. (19)IO流之字符流FileReader和FileWriter,缓冲字符流---缓冲输入字符流BufferedReader和缓冲输出字符流BufferedWriter

    字符流,读取的文件是字符的时候,有两个基类一个是Reader,一个是Writer这有点拟人的感觉,人直接看懂的是文字 字符流 字节流:读取的是文件中的二进制字节流并不会帮你转换成看的懂得字符 字符流: ...

  8. JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习

    JAVA之旅(二十四)--I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习 JAVA之旅林林总总也是写了二十多篇了,我们今天终于是接触到了I/O了 ...

  9. 【JAVA IO流之字符流】

    一.概述. java对数据的操作是通过流的方式.java用于操作流的对象都在IO包中.流按照操作数据不同分为两种,字节流和字符流.流按照流向分为输入流,输出流. 输入输出的“入”和“出”是相当于内存来 ...

随机推荐

  1. Netty之二进制文件传输

    传输会话简要 客户端发起一个文本请求给服务器端, 服务器端解析里面文本, 返回文件给客户端, 客户端解析文件 服务器端 因为示例文件比较小, 所以没有做分段传输, 而是直接一次性把整个文件byte[] ...

  2. H5混合开发二维码扫描以及调用本地摄像头

    今天主管给了我个需求,说要用混合开发,用H5调用本地摄像头进行扫描二维码,我之前有做过原生安卓的二维码扫一扫,主要是通过调用zxing插件进行操作的,其中还弄了个闪光灯.但是纯H5的没接触过,心里没底 ...

  3. JDK与JRE的关系

    JDK  =   JRE + Java语言 + 工具及工具API JRE  =    程序部署发布 + 用户界面工作集 + 集成库 + 其他基础库 + 语言和工具基础库 + Java虚拟机 简单讲:J ...

  4. iOS_4_表情排列

    终于效果图: BeyondViewController.h // // BeyondViewController.h // 04_表情排列 // // Created by beyond on 14- ...

  5. 在企业和应用市场发布Office Add-in

    作者:陈希章 发表于 2017年12月20日 我已经写了很多关于Office Add-in的内容,而且我相信你已经尝试过创建一两个Add-in了吧.作为一个开发人员,你有多种方式在自己的机器上使用你的 ...

  6. Microsoft Graph 桌面应用程序

    作者:陈希章 发表于 2017年3月22日 桌面应用程序,在我这篇文章的语境中,我是特指在Windows桌面上面直接运行的.NET应用程序,包括Console Application,WPF Appl ...

  7. 巧用CAS解决数据一致性问题

    缘起:在高并发的分布式环境下,对于数据的查询与修改容易引发一致性问题,本文将分享一种非常简单但有效的优化方法. 一.业务场景 业务场景为,购买商品的过程要对余额进行查询与修改,大致的业务流程如下: ( ...

  8. string.prototype.replace 和正则表达式

    字符串的replace方法是操作字符串的常用方法之一,但这个方法只有当与正则合并使用时,才能体现出它的强大之处. 语法:str.replace(regexp|substr, newsubStr|fun ...

  9. 搭建angular1 gulp项目(上传到gitup)

    (安装好相关的前端环境) 1.新建一个文件夹,名字为angular-gulp,dos命令切换到该目录,输入npm init,继续添上你需要的信息,ok之后目录中多了package.json(管理项目所 ...

  10. [UWP]了解模板化控件(7):支持Command

    以我的经验来说,要让TemplatedControl支持Command的需求不会很多,大部分情况用附加属性解决这个需求会更便利些,譬如UWPCommunityToolkit的HyperlinkExte ...