字符流

字节流提供处理任何类型输入/输出操作的足够功能,但不能直接操作Unicode字符,因而需要字符流。

字符流层次结构的顶层是Reader和Writer抽象类。

实际上,字符流的底层就是字节流。

一、Reader

①   Reader是定义Java的流式字符输入模式的抽象类。

②   Reader抽象类中的方法:

a)       public int read(CharBuffer target) throws IOException

b)       public int read()

c)       public int read(char[] cbuf)

d)       public abstract int read(char[] cbuf,int off,int len)

e)       public abstract void close()

二、Writer

① Writer是定义流式字符输出的抽象类。

② 该类的方法都返回void值并在出错条件下抛IOException异常。

③ Writer抽象类中方法:

a)         public void write(int c)

b)         public void write(char[] cbuf)

c)         public abstract void write(char[] cbuf,int off,int len)

d)         public void write(String str) throws IOException

e)         public void write(String str,int off,int len)

f)          public Write append(char c)

g)         public abstract void flush()

h)         public abstract void close()

三、FileReader

①   FileReader类表示可以读取文件内容的Reader类。

②   构造方法:

a)         FileReader(String filePath)

b)         FileReader(File fileObj)

四、 FileWriter

①   FileWriter表示可以写文件的Writer类

②   构造方法:

a)         FileWriter(String filePath)

b)         FileWriter(String filePath,boolean append)

c)         FileWriter(File fileObj)

复制文本:

         FileReader fr=new FileReader("d:/aa.txt");
FileWriter fw=new FileWriter("d:/c.txt");
char[] buff=new char[100];
int len=0;//实际读到的字符个数
while((len=fr.read(buff))!=-1){
fw.write(buff, 0, len);
//fw.flush();//当最后不释放资源时,且缓冲区(8K)未写满时强制刷新
}
fr.close();
fw.close();//若此处不释放资源,缓冲区未写满,且无刷新语句时,文本将不会被复制进新的文本

五、BufferedReader

① BufferedReader通过缓冲输入提高性能

② 两个构造方法:

a)         BufferedReader(Reader inputStream)

b)         BufferedReader(Reader inputStream,int bufSize)

六、BufferedWriter

① BufferedWriter通过缓冲输出提高性能

② 两个构造方法:

a)         BufferedWriter(Writer outputStream)

b)         BufferedWriter(Writer outputStream,int bufSize)

同样做一个复制文本的功能(复制一个多行文本):

         FileReader fr=new FileReader("d:/JavaStudy/First.java");
BufferedReader br=new BufferedReader(fr);
FileWriter fw=new FileWriter("d:/abc.java");
BufferedWriter bw=new BufferedWriter(fw);
String line=null;
while((line=br.readLine())!=null){
System.out.println(line);
bw.write(line);
bw.newLine();//换行
//bw.flush();
}
br.close();
bw.close();

I/O流——字符流的更多相关文章

  1. 【Java基础】【21IO(字符流)&字符流其他内容&递归】

    21.01_IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写 ...

  2. java-IO流-字符流-FileReader、FileWriter、自定义小数组的拷贝、BufferedReader、BufferedWriter、readLine()和newLine()方法、LineNumberReader、使用指定的码表读写字符

    ###21.01_IO流(字符流FileReader) * 1.字符流是什么     * 字符流是可以直接读写字符的IO流     * 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要 ...

  3. JavaSE18-字节缓冲流&字符流

    1.字节缓冲流 1.1 字节缓冲流构造方法 字节缓冲流介绍 BufferOutputStream:该类实现缓冲输出流. 通过设置这样的输出流,应用程序可以向底层输出流写 入字节,而不必为写入的每个字节 ...

  4. Java IO流字符流简介及基本使用

    Java IO流字符流简介及常用字符流的基本使用 字符流分为输入字符流(Writer)和输出字符流(Reader),这两种字符流及其子类字符流都有自己专门的功能.在编码中我们常用的输出字符流有File ...

  5. IO流---字符流(FileWriter, FileReader ,BufferedWriter,BufferedReader)

    IO   Input  Output IO流用来处理设备之间的数据传输. java对数据的操作是通过流来实现的. 流按流向分:输入流,输出流     是相对内存而言的.把硬盘的数据读取到内存中就是输入 ...

  6. 1(3)IO流------字符流

    一.分类 字节流(不适用于文本) InputStream OutputStream 字符流 Reader Writer 二.字符流 按照字符为单位,英文1-1,中文看是UTF-8编码还是GBK编码 字 ...

  7. IO流--字符流与字节流--File类常用功能

    IO流的常用方法: 1: 文件的读取和写入图解: 2:字节流: 读写文件的方法: 一般效率读取: 读取文件:        FileInputStream(); 写数据:            Fil ...

  8. Java IO流-字符流

    2017-11-05 18:34:39 Java中的IO流按数据类型分类分为两种,一是字节流,二是字符流.字符流的出现是为了简化文本数据的读入和写出操作. 如果操作的文件是文本文件,那么使用字符流会大 ...

  9. 021.5 IO流——字符流

    ###############基本功能写 FileWriter fw = new FileWriter("xxx.txt"); fw.write("哈喽"); ...

随机推荐

  1. EA使用

    类逻辑图 关系1:泛化(继承),Driver和Northeastermer继承了Person类 关系2:实现,Northeastermer实现了LivingLeiFeng类 关系3:  关联,两个对象 ...

  2. 培训第四天-----jdbc连接oracle

    oracle链接数据库并向tableone插入中一条数据 package com.zjw.db; import java.sql.Connection; import java.sql.DriverM ...

  3. jQuery MiniUI开发系列之:Ajax处理超时、服务端错误

    MiniUI所有组件的ajax交互,均使用标准.成熟的jQuery.ajax. 依赖于jquery ajax组件的完善性,我们可以拦截住每一次ajax请求处理. 比如,拦截ajax返回数据前,判断返回 ...

  4. Sublime Text

    今天在网上找了个Sublime Text 3 Build 3065 的 license key .在最新的Build 3083 下可以使用,记录下. ----- BEGIN LICENSE ----- ...

  5. SOLID rule in JAVA design.

    Classes are the building blocks of your java application. If these blocks are not strong, your build ...

  6. Oracle中将查询出的多条记录的某个字段拼接成一个字符串的方法

    11g里面用listagg: select listagg(name,',') within (order by id) from table 10g里面用wm_concat:select wm_co ...

  7. 用iptables 实现本地端口转发

    设定本机2121端口转发到21端口 iptables -t nat -A PREROUTING -p tcp -i eth0 -d -j DNAT --to iptables -t nat -I PO ...

  8. OpenWrt自定义和官方一样的固件

    我用的OpenWrt版本是Barrier Breaker 14.07,硬件是NetGear WNDR4300. 我自定义固件的目的是把固件的根分区扩到最大(100MB,总FLASH是128MB),试过 ...

  9. Makefile 使用总结

    参考: [1]. Makefile 使用总结. http://www.cnblogs.com/wang_yb/p/3990952.html

  10. web----test-----selenium

    selenium ide 安装就自行百度吧. 对百度进行一个简单的录制. 1. 在Firefox浏览器打开百度页面. 2.在Firefox浏览器菜单栏中,选择“工具” ,选择selenium IDE ...