Java流操作之转换流
2016-03-17 16:26
363 查看
流的操作规律:
1.明确流和目的。
数据源(源头):就是需要读取,可以使用两个体系:InputStream、Reader
数据汇(目的地):就是需要写入,可以使用两个体系:OutputStream.Writer
2.操作的数据是否是纯文本数据?
如果是(读取/写入的是字符):
数据源:Reader
数据汇:Writer
如果不是(读取/写入的是字节):
数据源:InputStream
数据汇:OutputStream
3.确定了一个体系,明确操作的数据设备
数据源对应的设备,如硬盘(File)、内存(数组)、键盘(System.in)、网络(Socket流)
数据汇对应的设备,如硬盘(File)、内存(数组)、键盘(System.out)、网络(Socket流)
4.需要在基本操作上附加其他功能?比如需要缓冲去提高数据的读写效率,则可以使用装饰类,比如(BufferedReader/BufferedWriter)
凡是操作设备上的文本数据,涉及编码转换,必须使用转换流
package IODemo;
import java.io.BufferedReader;
1.明确流和目的。
数据源(源头):就是需要读取,可以使用两个体系:InputStream、Reader
数据汇(目的地):就是需要写入,可以使用两个体系:OutputStream.Writer
2.操作的数据是否是纯文本数据?
如果是(读取/写入的是字符):
数据源:Reader
数据汇:Writer
如果不是(读取/写入的是字节):
数据源:InputStream
数据汇:OutputStream
3.确定了一个体系,明确操作的数据设备
数据源对应的设备,如硬盘(File)、内存(数组)、键盘(System.in)、网络(Socket流)
数据汇对应的设备,如硬盘(File)、内存(数组)、键盘(System.out)、网络(Socket流)
4.需要在基本操作上附加其他功能?比如需要缓冲去提高数据的读写效率,则可以使用装饰类,比如(BufferedReader/BufferedWriter)
凡是操作设备上的文本数据,涉及编码转换,必须使用转换流
package IODemo;
import java.io.BufferedReader;
package IODemo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class InputStreamReaderDemo { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { /* * 完成文本文件的三个需求 (明确源和目的) * 1.输入控制台的内容输出到文本文件中 * 2.将文本文件的内容输出到控制台 * 3.将一个文件的内容复制到另一个文件中 */ //第三问 BufferedReader bufr = new BufferedReader(new InputStreamReader( new FileInputStream("Demo.txt"))); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("Demo3.txt"))); // 第二问 /* * BufferedReader bufr = new BufferedReader(new InputStreamReader( new * FileInputStream("Demo2.txt"))); BufferedWriter bufw = new * BufferedWriter(new OutputStreamWriter( System.out)); */ // 第一问 /* * BufferedReader bufr = new BufferedReader(new InputStreamReader( * System.in)); BufferedWriter bufw = new BufferedWriter(new * OutputStreamWriter( new FileOutputStream("Demo2.txt"))); */ // BufferedReader bufr=new BufferedReader(new // InputStreamReader(new FileInputStream("Demo.txt"))); /* * InputStream in = System.in; int ch1=in.read(); * System.out.println(ch1); int ch2=in.read(); System.out.println(ch2); */ /* * InputStreamReader isr = new InputStreamReader(in); BufferedReader * bufr = new BufferedReader(isr);// 装饰类在基本功能上进行扩展 */ String line = null; while ((line = bufr.readLine()) != null) { if (line.equals("XXXX"))//你可以自定义读取文件时的结束标志 { break; } bufw.write(line); bufw.newLine(); bufw.flush(); } } }
相关文章推荐
- SpringMVC的拦截器Interceptor
- SpringMVC中的DispatcherServlet详解
- 【编程语言】Struts2 中 iterator 标签的用法
- 从java多线程内存模型说到ConcurrentHashMap
- Java JUC之Atomic系列12大类实例讲解和原理分解
- Java Collection
- Struts 上传和下载功能
- Java对象结构及大小计算
- Struts2 Convention 系列 1
- Java的类加载机制
- Maven包引用出现重复包,去重复包3种方法(javassist)
- Eclipse 启动不了 一闪而过
- 学习之spring自带缓存
- 将Eclipse中的项目,添加到GitHub上
- java获取文件md5码
- Java对象分配简要流程
- java反射的一些调试
- MyEclipse 每次保存都要building workspace的解决方法
- 【转】Java并发编程:深入剖析ThreadLocal
- 数据流形式参数 访问counter