IO流 第一部分 (OutputStreamWriter BufferOutputStream)

转换流

超类为Reader和Writer

是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节。它的作用的就是,将字符串按照指定的编码表转成字节,在使用字节流将这些字节写出去。

先将字符交给转换流,然后转换流去查询指定的编码表,然后将查询后的对应编码表中的内容返回给对应的字节流,然后字节流进行对应的操作

OutputStreamWriter

构造方法

  • OutputStreamWriter(OuputStream out) // 传递进来一个OuputStream(多态)

  • OutputStreamWriter(OutputStream out, String charsetName) String charsetName 传递编码表名字 GBK UTF-8

使用

    						FileOutputStream fos = new FileOutputStream("c:\\utf.txt");
//创建转换流对象,构造方法保证字节输出流,并指定编码表是UTF-8
OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
osw.write("你好");
osw.close();

InputSteamReader(字节流向字符)

先将通过InputStream类读取字符,然后给InputSteamReader , InputSteamReader 查询编码表然后转换成字符输出

构造方法

  • InputSteamReader(InputStream out)

  • InputSteamReader(InputStream out,String charsetName)

使用

            InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream("d://deo2.txt"));
char[] b = new char[2]; int len = 0; while((len = inputStreamReader.read(b))!=-1){
System.out.println(new String(b,0,len));
}
inputStreamReader .close();

输出流的子类

子类可以直接操作文件,但是不能指定编码格式,默认使用系统默认的格式

FileReader fr = new FileReader("a.txt");

缓冲流

  • 提高输入输出的效率

  • 分为字节缓冲流与字符缓冲流

BufferedOutputStream(字节输出流缓冲流)

构造方法

  • BufferedOutputStream(OutputStream out)

使用

					//创建字节输出流缓冲流的对象,构造方法中,传递字节输出流
BufferedOutputStream bos = new
BufferedOutputStream(new FileOutputStream("c:\\buffer.txt")); bos.write(55); byte[] bytes = "HelloWorld".getBytes(); bos.write(bytes); bos.write(bytes, 3, 2); bos.close();

BufferedInputStream (字节输入流缓冲流)

构造方法

  • BufferedInputStream(InputStream in)
					//创建字节输入流的缓冲流对象,构造方法中包装字节输入流,包装文件
BufferedInputStream bis = new
BufferedInputStream(new FileInputStream("c:\\buffer.txt"));
byte[] bytes = new byte[10];
int len = 0 ;
while((len = bis.read(bytes))!=-1){
System.out.print(new String(bytes,0,len));
}
bis.close();

BufferedWriter(字符输出流缓冲流)

构造方法

  • BufferedWriter(Writer w)

BufferedWriter具有一个特殊的方法 newLine() 作用为换行 (平台无关性)

					FileWriter fw = new FileWriter("c:\\buffer.txt");
BufferedWriter bfw = new BufferedWriter(fw); bfw.write(100);
bfw.newLine();
bfw.flush();

BufferedReader

构造方法

BufferedReader(Reader r)

有独特的方法 readLine() 读取一行 , 只返回行的有效字符,不包含\r\n (即读出来的数据是一行)

    					int lineNumber = 0;
//创建字符输入流缓冲流对象,构造方法传递字符输入流,包装数据源文件
BufferedReader bfr = new BufferedReader(new FileReader("c:\\a.txt"));
//调用缓冲流的方法 readLine()读取文本行
//循环读取文本行, 结束条件 readLine()返回null
String line = null;
while((line = bfr.readLine())!=null){
lineNumber++;
System.out.println(lineNumber+" "+line);
}
bfr.close();

通过字符流缓冲区流复制文本文件

					BufferedReader bfr = new BufferedReader(new FileReader("c:\\w.log"));
BufferedWriter bfw = new BufferedWriter(new FileWriter("d:\\w.log"));
//读取文本行, 读一行,写一行,写换行
String line = null;
while((line = bfr.readLine())!=null){
bfw.write(line);
bfw.newLine();
bfw.flush();
}
bfw.close();
bfr.close();

最新文章

  1. Linux内核分析—完成一个简单的时间片轮转多道程序内核代码
  2. 图像分割之(二)Graph Cut(图割)
  3. 【MySQL】MySQL同步报错-> Last_IO_Error: Got fatal error 1236 from master when reading data from binary log
  4. CSS3 background-size图片自适应
  5. Miniui updateRow更改列字段值
  6. remastersys修改默认选项
  7. Android万能分辨率适应法
  8. SpringMVC的web.xml配置注意
  9. C#操作SQLite 报错 (Attempt to write a read-only database)
  10. Solr服务在Linux上的搭建
  11. linear-grident的属性和使用
  12. 使用Identity Server 4建立Authorization Server (4)
  13. python3 爬取boss直聘职业分类数据(未完成)
  14. 【转载】app测试的过程和重点关注内容
  15. jsp笔记----97DatePicker日期插件简单使用
  16. gnuradio 使用eclipse 编辑器记录
  17. jenkins迁移升级简述
  18. vmvare安装系统提示vmci.sys 版本不正确解决方法
  19. bootstrap table 兼容ie8 -- refreshOptions
  20. Swift教程之运算符重载

热门文章

  1. 201521123080《Java程序设计》第3周学习总结
  2. windows消息机制与实例
  3. 自动化测试之 seleniumIDE,Selenium1,selenium2和testNG入门
  4. HTML文本
  5. MyBatis Mapper.xml文件中#{selector}和${selector}的区别
  6. webpack + vue + node 打造单页面(入门篇)
  7. webView 不能复制解决方案
  8. GitHub新手使用教学(从安装到使用)
  9. jquery自定义banner图滚动插件---(解决最后一张图片倒回第一张图片的bug)
  10. String类的一些转换功能(6)