字符流:读写字符的

顶级父类是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. 树莓派搭建pptp---vpn

    好久没写博文了啊,这次好好写 先普及下知识啊 PTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议, ...

  2. OBS源码解析(2)run_program函数

    static int run_program(fstream &logFile, int argc, char *argv[]){ /*初始化和读取profile相关信息*/ int ret ...

  3. 42.Linux应用调试-初步制作系统调用(用户态->内核态)

    1首先来讲讲应用程序如何实现系统调用(用户态->内核态)? 我们以应用程序的write()函数为例: 1)首先用户态的write()函数会进入glibc库,里面会将write()转换为swi(S ...

  4. 免费靠谱的 Let’s Encrypt 免费 https 证书申请全过程

    申请 Let’s Encrypt证书的原因: 现在阿里云等都有免费的 https 证书,为什么还要申请这个呢(估计也是因为阿里云这些有免费证书的原因,所以 Let’s Encrypt 知道的人其实并不 ...

  5. Material使用01 侧边栏MdSidenavModule、工具栏MdTollbarModule

    前提准备: 构建好一个Angular2应用 熟悉CSS的flex布局风格 1 利用flex进行布局 1.1 创建三个组件 app-header app-main app-footer 1.2 在主组件 ...

  6. hadoop单机版安装及基本功能演示

    本文所使用的Linux发行版本为:CentOS Linux release 7.4.1708 (Core) hadoop单机版安装 准备工作 创建用户 useradd -m hadoop passwd ...

  7. Android中相机和相冊使用分析

    Android中相机和相冊使用分析 欢迎转载,但请尊重原创(文章来自不易,转载请标明转载出处,谢谢) 在手机应用程序中,使用自带的相机拍照以及相冊选择喜欢的图片是最常见只是的用户需求,那么怎么合理使用 ...

  8. 基于Metronic的Bootstrap开发框架经验总结(17)-- 使用 summernote插件实现HTML文档的编辑和图片插入操作

    在很多场合,我们需要在线编辑HTML内容,然后在页面上或者其他终端上(如小程序.APP应用等)显示,编辑HTML内容的插件有很多,本篇介绍基于Bootstrap的 summernote插件实现HTML ...

  9. mysql+mybatis递归调用

    递归调用的应用场景常常出现在多级嵌套的情况,比如树形的菜单.下面通过一个简单的例子来实现mysql+mybatis的递归. 数据模型 private Integer categoryId; priva ...

  10. 自学Python1.2-环境的搭建:Pycharm及python安装详细教程

    Python几乎可以在任何平台下运行,如我们所熟悉的:Windows/Unix/Linux/Macintosh 一.windows下安装Python 1. 从python官方网站:http://www ...