字符流

字节流提供处理任何类型输入/输出操作的足够功能,但不能直接操作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. JAVA编程规范(下)

    JAVA编程规范(下) 2016-03-27 6. 代码的格式化 6.1 对代码进行格式化时,要达到的目的 1.     通过代码分割成功能块和便于理解的代码段,使代码更容易阅读和理解: 2.     ...

  2. 在VS中添加lib的简单方法

    1.工程---属性---配置属性---VC++ Directories---General---Include Directories:加上头文件存放目录 2.VC中,切换到"解决方案视图& ...

  3. AES加密算法实现

    AES算法是一种对称加密算法,是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准. 下文实例中,密钥采用了直接写死的方式,实际使用中可以配合RSA加密算法加密密钥,从而达到更好的安全效 ...

  4. Jmeter组件8. BeanShell Sampler

    BeanShell是一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性,像JavaScript和perl那样 ...

  5. iOS项目中安装和使用 Cocoapods

    1.首先我们要打开我们的终端: 2.在终端输入 这条命令  gem sources -l 2.1如果是和我是一样的显示,则镜像已添加,无需更改,如果不一样,则需要进行更改 这里输出的如果是 https ...

  6. GCD、dispatch函数介绍

    iOS多线程的方法有3种: NSThread NSOperation GCD(Grand Central Dispatch) 其中,由苹果所倡导的为多核的并行运算提出的解决方案:GCD能够访问线程池, ...

  7. dom js

    var addEvent = function( obj, type, fn ) { if (obj.addEventListener) obj.addEventListener( type, fn, ...

  8. android开发--Application

    Android Application介绍 一.先看看文档里怎么说 Base class for those who need to maintain global application state ...

  9. MySQL之账户管理

    MySQL之账户管理 账户管理是MySQL用户管理最基本的内容.包括登录,退出MySQL服务器.创建用户.删除用户.密码管理和权限管理等内容. 其中登录方式非常简单,在这个地址有:http://www ...

  10. js实现继承的两种方式

    这是面试时面试官会经常问到问题: js的继承方式大致可分为两种:对象冒充和原型方式: 一.先说对象冒充,又可分为3种:临时属性方式.call().apply(): 1.临时属性方式: 当构造对象son ...