Java IO学习笔记三
来源:互联网 发布:袁世凯如果不称帝 知乎 编辑:程序博客网 时间:2024/05/22 00:36
Java IO学习笔记三
在整个
IO
包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类。
OutputStreamWriter
:是Writer
的子类,将输出的字符流变为字节流,即:将一个字符流的输出对象变成字节流的输出对象。
InputStreamReader
:是Reader
的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变成字符流的输入对象。一般在操作输入输出内容就需要使用字节或字符流,但是有些时候需要将字符流变成字节流的形式,或者将字节流变为字符流的形式,所以,就需要另外一组转换流的操作类。
InputStreamReader
InputStreamReader
是字节流通向字符流的桥梁:它使用指定的charset
读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。每次调用
InputStreamReader
中的一个read()
方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。主要的功能还是从文件中读取内容,不过是一次性的读取多个字节,这个很像它的子类
FileReader
构造函数
InputStreamReader(InputStream in)
创建一个使用默认字符集的InputStreamReader
,不过这里的InputStream
是抽下类,因此可以使用它的子类FileInputStream
实例化,这里的FileInputStream
是操作字节流的,显然看出这个类的作用就是字符流和字节流的桥梁
常用方法
close()
int read()
读取单个字符int read(Char[] c)
读取字符存储在字符数组中int read(char[] cbuf, int offset, int length)
将字符读入数组中的某一部分boolean ready()
判断此流是否已经准备好用于读取。
实例
package IO;import java.io.*;/** * Created by chenjiabing on 17-5-24. */public class demo4 { public static void main(String args[]) { File file = new File("/tmp" + File.separator + "test" + File.separator + "test.txt"); InputStreamReader inputStreamReader = null; try { inputStreamReader = new InputStreamReader(new FileInputStream(file)); //初始化 char[] c = new char[(int) file.length()]; //创建数组 try { int len = inputStreamReader.read(c); //将内容读取到数组中 System.out.println(len); for (int i = 0; i < c.length; i++) { System.out.print(c[i]); } } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); }finally { if(inputStreamReader!=null) { try { inputStreamReader.close(); //关闭 }catch (IOException e) { e.printStackTrace(); } } } }}
注意:从上面的代码中可以看到这个和
FileReader
的操作是一样的,只是构造的方法不一样
OutputStreamWriter
OutputStreamWriter
是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。每次调用
write()
方法都会导致在给定字符(或字符集)上调用编码转换器。在写入底层输出流之前,得到的这些字节将在缓冲区中累积。可以指定此缓冲区的大小,不过,默认的缓冲区对多数用途来说已足够大。注意,传递给write()
方法的字符没有缓冲。主要的功能还是向文件中写入文件
构造函数
OutputStreamWriter(OutputStream out)
创建使用默认字符编码的OutputStreamWriter
。这里同样是抽象类,所以用它的子类FileOutputStream
实例化
常用方法
close()
flush()
write(String str)
写入字符串void write(String str, int off, int len)
写入字符串的某一部分。write(int c)
写入单个字符void write(char[] cbuf, int off, int len)
写入字符数组的某一部分。
实例
package IO;import java.io.*;/** * Created by chenjiabing on 17-5-24. */public class demo5 { public static void main(String[] args) { File file=new File("/tmp"+File.separator+"test"+File.separator+"test.txt"); OutputStreamWriter outputStreamWriter=null; try { outputStreamWriter=new OutputStreamWriter(new FileOutputStream(file,true)); String str="陈加兵\n"; int data=48; String name="chenjiabing"; try { outputStreamWriter.write(str); outputStreamWriter.write(data); outputStreamWriter.write(name,0,2); //写入字符串的一部分 }catch (IOException e) { e.printStackTrace(); } }catch (FileNotFoundException e) { e.printStackTrace(); }finally { if(outputStreamWriter!=null) { try { outputStreamWriter.flush(); outputStreamWriter.close(); }catch (IOException e) { e.printStackTrace(); } } } }}
从上面可以看出
OutputStreamWriter
和FileWriter
的用法一样
参考文章
- http://www.cnblogs.com/lich/archive/2011/12/11/2283848.html
更多文章请移步本人博客https://chenjiabing666.github.io/
- Java IO学习笔记三
- java IO流学习笔记三
- IO学习笔记(三)
- 黑马程序员-Java学习笔记之IO流(三)
- Java文件IO学习笔记(三)--创建文件和目录
- Java学习笔记之IO(三):OutputStream输出字节流
- IO学习笔记(三)
- Java IO学习笔记
- Java IO学习笔记
- java IO学习笔记
- Java IO学习笔记
- Java IO学习笔记
- Java IO学习笔记
- JAVA IO学习笔记
- java io 学习笔记
- Java学习笔记-IO
- Java IO学习笔记
- java IO 学习笔记
- nsq源码阅读 nsqd源码一 apps/nsqd/nsqd.go
- STM32之启动文件理解
- CF
- 理解梯度下降在机器学习模型优化中的应用
- LeetCode 41 First Missing Positive
- Java IO学习笔记三
- 第十六天:用properties获取本地的txt信息,并按要求打印出来
- ConstraintLayout 属性详解 和Chain的使用
- 关于jdk代理与cglib代理
- android内存优化思考与汇总
- anaconda2安装igraph
- IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)
- 查看linux中内核最大允许打开的fd(文件描述符)
- 转]详细讲解提高数据库查询效率的实用方法、外键关于性能