从昨天开始没事情干时,决定梳理梳理Java IO流,因为觉得太混乱这个东西,妈的,咋就这么多类型,想累死谁啊,这里并不是埋怨创造者,而是气自己看着看着老跑偏,实在看不进去,太多了,想睡觉,所以现在决定每天学习一类,我倒是要看看要多久自己才能完成任务!

字符流:啥是字符流呢?又和字节流有啥区别呢?(但是字符流说到底还是字节流,只是封装了一下下。)

字符流  一个字符或多个字符(1个字符=2个字节,字符类型UniCode) 语言支持性比较好
字节流  一个字节或对个字节(1字节=8bit) 对图片、音频支持性较好

1 BufferedReader

从流里面读取文本,通过缓存的方式提高效率,读取的信息包括字符、数组、行,缓存的大小可以指定也可以默认,一般默认就够用了。

1.1构造函数

  • BufferedReader(Reader in);创建一个默认大小输入缓冲区的缓冲字符流。
  • BufferedReader(Reader in, int size);创建一个使用指定大小输入缓冲区的缓冲字符输入流。

1,2初始化 

BufferedReader br = new BufferedReader(new FileReader("D:1.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

第一个方法是从文件中读取,第二个是标准输入(控制台)读取。

1.3 三种读取方法

  • read()读取一个字符,返回读取字符的ascII码,当读取到最末尾时,返回-1 。
  • read(char[] cbuf, int off, int len);将读取的字符缓存到char数组里,off开始缓存的数组下标,len要读取的最大字符,返回读取的字符数量,末尾时返回-1 。
  • readLine()读取一个文本行,返回String包含该行内容的字符串。

 1.3.1 read()代码

public static void bufferedReaderAndWriterTest() throws IOException{
BufferedReader br = new BufferedReader(new FileReader("D:1.txt"));
int res = 0;
while((res = br.read()) != -1){
System.out.print((char) res);
}
br.close();
}

运行结果:

1.3.2 read(char[] cbuf, int off, int len)代码

public static void bufferedReaderAndWriterTest() throws IOException{
BufferedReader br = new BufferedReader(new FileReader("D:1.txt"));
char[] cbuf = new char[5];
int num = br.read(cbuf, 0, 5);
System.out.println("读取了" + num + "个字符");
for(int i = 0; i < num; i++){
System.out.print(cbuf[i]);
}
br.close();
}

运行结果:

    1.3.3 readLine()代码

public static void bufferedReaderAndWriterTest() throws IOException{
BufferedReader br = new BufferedReader(new FileReader("D:1.txt"));
String str = br.readLine();
System.out.println(str);
br.close();
}

运行结果:

1.4 其他方法

ready()判断输入流是否准备好被读取

2 BufferedWriter

2.1 构造方法

  • BufferWriter(Writer out) 创建一个使用默认大小输出缓冲区的缓冲字符输出流。
  • BufferedWriter(Writer our, int size) 创建一个使用指定大小输出缓冲区的缓冲字符输出流。

2.2 初始化

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:1.txt", true));

输出到标准输出(控制台)或者一个文本文件。

2.3 三种输出方法

  • write(char[] cbuf, int off, int len)写入字符数组的一部分,off开始写入的数组下标,len长度,无返回。
  • write(int c) 写入单个字符, 无返回。
  • write(String s, int off, int len) 写入字符串的一部分, 无返回。

2.3.1 write(char[] cbuf, int off, int len)代码

public static void bufferedReaderAndWriterTest() throws IOException{
BufferedWriter bw = new BufferedWriter(new FileWriter("D:1.txt", true));
char[] cbuf = new char[]{'好','好', '学', '习','!'};
bw.write(cbuf, 0, 3);
bw.flush();
bw.close();
}

运行结果:

2.3.2 write(int c)代码

public static void bufferedReaderAndWriterTest() throws IOException{
BufferedWriter bw = new BufferedWriter(new FileWriter("D:1.txt", true));
bw.write(98);
bw.flush();
bw.close();
}

运行结果:

2.3.3write(String s, int off, int len)代码

public static void bufferedReaderAndWriterTest() throws IOException{
BufferedWriter bw = new BufferedWriter(new FileWriter("D:1.txt", true));
bw.write("大傻叉龟儿子", 1, 5);
bw.flush();
bw.close();
}

运行结果:

2.4 其他方法

newLine()写入一个行分隔符

-------------------------------------------------------------------------------------------------------------

end

终于写完了,明天继续!

Java IO--字符流--BufferedReader和BufferedWriter的更多相关文章

  1. Java Io 字符流

    Java Io 字符流包含: 1. InputStreamReader  它是由byte流解析为char流,并且按照给定的编码解析. 2. OutputStreamWrite  它是char流到byt ...

  2. Java IO: 字符流的Buffered和Filter

    作者: Jakob Jenkov  译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader.B ...

  3. Java IO: 字符流的Piped和CharArray

    作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍管道与字符数组相关的reader和writer,主要涉及PipedReader.Pip ...

  4. Java基础---Java---IO流-----BufferedReader、BufferedWriter、缓冲区、装饰设计模式及和继承的区别

    IO流 IO流用来处理设备之间的数据传输 java对数据的操作是过流的方式 流按操作数据分为两种:字节流与字符流 流按流向分为:输入流,输出流. IO流常用基类 字节流的抽象基类:InputStrea ...

  5. java IO字符流

    字节流:因为内存中数据都是字节,二进制数据. 字符流:方便处理文本数据.字符流是基于字节流的. ascii 编码表,并且各国都有自己的编码表. unicode码表,世界码表.优化后 utf-8码表. ...

  6. java -io字符流FileWrite操作演示

    FileWriter字符输出流演示: /* * FiileWriter 字符流的操作 * FileWriter 的构造方法 可传递 File类型 还可以传递String类型 * * 方法 : * wr ...

  7. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

    在上一篇文章中Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream介绍了缓冲流中的字节流,而这一篇着重介绍缓冲流中字符流Buffered ...

  8. Java文件字符流

    1.字符编码(Character encoding)和编码集(Character set) 字符编码(Character encoding)是将字符转为字节或字节数组的过程. 字符集(Characte ...

  9. Java IO(五)——字符流进阶及BufferedWriter、BufferedReader

    一.字符流和字节流的区别 拿一下上一篇文章的例子: package com.demo.io; import java.io.File; import java.io.FileReader; impor ...

随机推荐

  1. jquery作业

    1. 通过jquery动态的创建一个表格,随机生成(id自增,name随机2-3个中文汉字(10个姓,20个名字),age随机100以内整数)大于50小于100行的数据(用户对象:id,name,ag ...

  2. Day8 面向对象反射 item方法 打印对象信息__str__ 构析方法__del__ 程序的异常处理

    反射:通过字符串来访问到所对应的值(反射到真实的属性上). eg: class Foo: x=1 def __init__(self,name): self.name=name def f1(self ...

  3. C++内存分区

    C++的内存划分为栈区.堆区.全局区/静态区.字符串常量和代码区. 这里去掉自由存储区,增加了代码区,理由会在下面讲到. 栈区:由系统进行内存的管理. 说明:主要存放函数的参数以及局部变量.栈区由系统 ...

  4. ruby簡單的代碼行統計工具

    看代码 # encoding: utf-8 class CodeLineStat attr_reader :code_lines def initialize @code_lines = 0 end ...

  5. Phaser文档访问不了,下载英文版文档到本地,已经共享在国内网站上面

    点击链接查看, http://www.simuhunluo.top/Phaser/ 可以找到你所需要的类.

  6. Python flask中的配置

    当你开始学习Flask时,配置看上去是小菜一碟.你仅仅需要在config.py定义几个变量,然后万事大吉. 然而当你不得不管理一个生产上的应用的配置时,这一切将变得棘手万分. 你不得不设法保护API密 ...

  7. mysql 存储引擎简介

    几个常用存储引擎的特点 下面我们重点介绍几种常用的存储引擎并对比各个存储引擎之间的区别和推荐使用方式. 特点 Myisam BDB Memory InnoDB Archive 存储限制 没有 没有 有 ...

  8. js流程语句

    一.跳转语句1.break; 终止整个循环,不再进行判断2.continue; 终止本次循环,接着去判断是否执行下次循环 二.选择(判断)结构1.if 如果               if(条件1) ...

  9. -bash: ./switch.sh: /bin/bash^M: bad interpreter: No such file or directory

    问题: 偶然使用 windows 进行编写脚本.使用 wsl (windows subsystem for linux) 进行运行的时候,什么事情没有.但是当把脚本移植到远程服务器进行运行的时候,发现 ...

  10. 【转】Javascript错误处理——try…catch

    无论我们编程多么精通,脚本错误怎是难免.可能是我们的错误造成,或异常输入,错误的服务器端响应以及无数个其他原因. 通常,当发送错误时脚本会立刻停止,打印至控制台. 但try...catch语法结构可以 ...