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. pycharm 工具栏Tool中找不到Run manager.py Task

    pycharm 工具栏Tool中找不到Run manager.py Task 在做Django项目的过程中, 无法进入pycharm提供的Run manager.py Task交互环境 出现这种问题是 ...

  2. epoll_wait 返回值学习以及epoll使用学习

    https://blog.csdn.net/analogous_love/article/details/88721574

  3. java.utils.UUID类介绍

    1 UUID介绍 UUID (Universally Unique Identifier)缩写,即通用唯一识别码,也是被开源软件基金会 (Open Software Foundation, OSF) ...

  4. Mac OS terminal终端常用命令

    基础概念 OS X 采用的Unix文件系统,所有文件都挂在跟目录“ /” 下面,所以不在要有Windows 下的盘符概念.比如什么“C:”你在桌面上看到的硬盘都挂在 /Volumes 下.比如接上个叫 ...

  5. 【javascript】Javascript闭包

    在描述闭包的实现与用途前,需要了解以下一些知识点. 执行上下文(执行上下文环境) console.log(a); //Uncaught ReferenceError: a is not defined ...

  6. 利用git工具命令简单的从github上拷贝和上传代码

    第一:从github上拷贝项目到本地   1.在github上建立一个项目名为:MygitTest 2.在我们本地电脑上把这个项目拷贝下来:直接选择一个文件夹,右键选择git Bash here 直接 ...

  7. solr不是标准的java project解决方案

    官方默认提供的源码包并不是一个标准的Eclipse Java - Project,需要使用ivy进行构建,通过ivy的构建可以将下载下来的源码包转换成一个标准的java Project,然后我们就能把 ...

  8. show_space

    create or replace procedure show_space( p_segname_1 in varchar2,p_space in varchar2 default 'AUTO',p ...

  9. [android] 天气app布局练习

    主要练习一下RelativeLayout和LinearLayout <RelativeLayout xmlns:android="http://schemas.android.com/ ...

  10. redis(7)LRU缓存

    一.LRU简介 LRU是Least Recently Used的缩写,即:最近最少使用. 它是内存管理中的一种页面置换算法,对于在内存中但是又不用的数据块,操作系统会根据哪些数据属于LRU而将其移除内 ...