java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)。

  文件是byte byte byte ... 的数据序列。

  文本文件是文本(char)序列按照某种编码方案(uft-8、utf-16be、gbk)序列化为byte的存储结果。

  • 字符流(Reader、Writer)-->操作的是文本、文本文件

  1.字符的处理,一次处理一个字符

  2.字符的底层仍然是基本的字节序列

  3.字符流的基本实现:

  InputStreamReader是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。

  OutputStreamWriter是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。

public class ISReaderAndOSWriter {

    public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("F:\\javaio\\java.txt");
FileOutputStream out = new FileOutputStream("F:\\javaio\\java1.txt"); InputStreamReader isr = new InputStreamReader(in, "gbk");
OutputStreamWriter osw = new OutputStreamWriter(out, "gbk"); int c;
// while ((c = isr.read()) != -1) {
// System.out.print((char)c);
// } char[] buf = new char[8 * 1024];
while ((c = isr.read(buf, 0, buf.length)) != -1) {
String s = new String(buf, 0, c);
//System.out.println(s);
osw.write(s);
}
isr.close();
osw.close();
} }

  4.文件读写流,FileReader和FileWriter,读取字符文件和写入字符文件的便捷类。

public class FileReaderAndFileWriter {
public static void main(String[] args) throws Exception {
FileReader fr = new FileReader("F:\\javaio\\javautf.txt");
FileWriter fw = new FileWriter("F:\\javaio\\javautf1.txt");
//FileWriter fw = new FileWriter("F:\\javaio\\javautf1.txt", true);//向指定文件中追加内容 char[] buf = new char[1 * 1024];
int c;
while ((c = fr.read(buf, 0, buf.length)) != -1) {
System.out.println(c);
fw.write(buf, 0, c);
fw.flush();
}
fr.close();
fw.close();
}
}

  5.字符流的过滤器

  BufferedReader,一次读一行

  BufferedWriter/PrintWriter,一次写一行

public class BufRAndBufWOrPrintW {

    public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("F:\\javaio\\javautf.txt")));
//BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("F:\\javaio\\javautf2.txt")));
PrintWriter pw = new PrintWriter("F:\\javaio\\javautf3.txt"); String s;
while ((s = br.readLine()) != null) {
//一次读一行,不能识别换行符
//bw.write(s);
//bw.newLine();//写入一个行分隔符
//bw.flush();
pw.println(s);//通过写入行分隔符字符串终止当前行
pw.flush();
}
br.close();
//bw.close();
pw.close();
}
}

Java—IO流 字符流的更多相关文章

  1. Java IO: 其他字符流(下)

    作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackReader,LineNumberReader,St ...

  2. Java IO之字符流和文件

    前面的博文介绍了字节流,那字符流又是什么流?从字面意思上看,字节流是面向字节的流,字符流是针对unicode编码的字符流,字符的单位一般比字节大,字节可以处理任何数据类型,通常在处理文本文件内容时,字 ...

  3. [Java IO]03_字符流

    Java程序中,一个字符等于两个字节. Reader 和 Writer 两个就是专门用于操作字符流的类. Writer Writer是一个字符流的抽象类.  它的定义如下: public abstra ...

  4. Java IO编程——字符流与字节流

    在java.io包里面File类是唯一 一个与文件本身有关的程序处理类,但是File只能够操作文件本身而不能够操作文件的内容,或者说在实际的开发之中IO操作的核心意义在于:输入与输出操作.而对于程序而 ...

  5. java IO之 字符流 (字符流 = 字节流 + 编码表) 装饰器模式

    字符流 计算机并不区分二进制文件与文本文件.所有的文件都是以二进制形式来存储的,因此, 从本质上说,所有的文件都是二进制文件.所以字符流是建立在字节流之上的,它能够提供字符 层次的编码和解码.列如,在 ...

  6. Java——IO类 字符流概述

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  7. Java IO(四--字符流基本使用

    在上一节,介绍了字节流的基本使用,本节介绍一下字符流的使用 Reader: public abstract class Reader implements Readable, Closeable { ...

  8. Java IO系统--字符流

    字符流:尽管字节流提供了处理任何类型输入/输出操作的足够功能,它们补鞥呢直接操作Unicode字符.字符流层次结构的顶层是Reader和Writer抽象类.类似于InputStream和OutputS ...

  9. Java IO之字符流

    public static void main(String[] args) { FileWriter fw = null; try { fw = new FileWriter("/User ...

  10. java字节流和字符流,以及java文件操作

    A.首先说字节流:1.字节流在操作的时候不会用到缓冲区(也就是内存)2.字节流可用于任何类型的对象,包括二进制对象3.字节流处理单元为1个字节,操作字节和字节数组.InputStream是所有字节输入 ...

随机推荐

  1. js map 、filter 、forEach 、every、some 的用法

    1.map 首先map 就是将原数组 映射成 新的数组: 其次map 有返回值 2.filter 对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组,该数组元素是所有回调 ...

  2. php查询某个字段指定值的所有条数

    一.查询某个字段指定值的所有条数 以name叫张三的人为例,查询表中叫张三的人的总数 $where['name']='张三'; $count=M('table')->where($where)- ...

  3. 关于cmdbuild

    哪位大神用过cmdbuild,网上的资料非常少,而且都是关于如何安装的,就在这少只又少的文章里,居然还都是互抄的,哎!!!

  4. AngularJs学习笔记--Creating Services

    原版地址:http://docs.angularjs.org/guide/dev_guide.services.creating_services 虽然angular提供许多有用的service,在一 ...

  5. xamarin RunOnUiThread

    One of the keys to maintaining a responsive GUI is to do long-running tasks on a background thread s ...

  6. 案例25-servlet的抽取

    1 product模块的抽取版本一 1 ProductServlet代码 抽取之后,原来对应的IndexServlet,ProductListByCidServlet等都可以删除.对应的web.xml ...

  7. c++ 网络编程(四) LINUX/windows下 socket 基于I/O复用的服务器端代码 解决多进程服务端创建进程资源浪费问题

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9613861.html 好了,继上一篇说到多进程服务端也是有缺点的,每创建一个进程就代表大量的运 ...

  8. 【Lua】Lua + LWT + ExtJS构建目录树

    Lua处理后台逻辑,Lua lwt搭建后台程序,ExtJS根据后台传来的json数据构建目录树. 前台html和ExtJS代码不用多讲,直接上代码: treePanel.html <html&g ...

  9. java.security.MessageDigest的使用之生成安全令牌!

    时候,我们需要产生一个数据,这个数据保存了用户的信息,但加密后仍然有可能被人使用,即便他人不确切的了解详细信息... 好比,我们在上网的时候,很多网页都会有一个信息,是否保存登录信息,以便下次可以直接 ...

  10. html控件

    checkbox val = "<li class='layer'><label><input type='checkbox' checked name='la ...