Java流操作之转换流
流的操作规律:
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();
}
} }
Java流操作之转换流的更多相关文章
- Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter)
Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.转换流概述 我们之前 ...
- java基础53 IO流技术(转换流)
1.转换流 1.输入字节的转换流:InputStreamReader是字节流转为字符流的桥梁,可以把输入字节流转换为输入字符流 2.输出字节流的转换流:OutputStreamWriter是字符 ...
- 黑马程序员——JAVA基础之IO流缓冲区,转换流,字节流
------- android培训.java培训.期待与您交流! ---------- 字符流的缓冲区 缓冲区的出现提高了对数据的读写效率. 对应类 • BufferedWriter ...
- Java 持久化操作之 --io流与序列化
1)File类操作文件的属性 1.File类的常用方法 1. 文件的绝对完整路径:getAbsolutePath() 文件名:getName() 文件相对路径:getPath() 文件的上一级目录:g ...
- 6.4(java学习笔记)转换流
一.乱码问题 我们来看下列例子: public class ConStream { //当前平台默认采用GBK public static void main(String[] args){ Stri ...
- Java——IO类,转换流简化写法
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- Java - io输入输出流 --转换流
转换流 转换输出流 OutputStreamWriter: 说明: /* * OutputStreamWriter 这个类的作用 * 就是指定输出流的编码格式 * 这个类的构造方法 需要传递 一个输 ...
- File类与常用IO流第九章——转换流
第九章.转换流 字节编码和字符集 编码:按照某种规则将字符以二进制存储到计算机中. 解码:将存储在计算机中的二进制数按照某种规则解析显示出来. 字符编码:Character Encoding ,就是一 ...
- Java I/O流操作(二)---缓冲流[转]
转自:http://blog.csdn.net/johnny901114/article/details/8710403 一.BufferWriter类 IO的缓冲区的存在就是为了提高效率,把要操作的 ...
随机推荐
- 学习记录:浏览器JAVASCRIPT里的WINDOWS,DOCUMNET
看完以下这段话之后,就理解DOCUMNET.READY之类的说法了. 或是JAVASCRIPT的浏览器里更细致的操作DOCUMENT的东西了. DOCUMNET和WINDOWS谁大谁小, 立即执行的匿 ...
- CityEngine 2013部署安装
安装环境: windows8.1 专业版 已安装arcgis10.2 2的授权方式也同样分为:单机许可和浮动 许可.单机许可是将许可部署在本机直接使用:浮动许可是部署到服务器上通过IP地址连接,可借出 ...
- easyui返回数据类型
/** * 我申请的事项List * * @param personalParamVo * @param pagePara * @return */ @ResourceMapping("my ...
- 在C++中调用DLL中的函数
如何在C++中调用DLL中的函数 应用程序使用DLL可以采用两种方式:一种是隐式链接,另一种是显式链接.在使用DLL之前首先要知道DLL中函数的结构信息.Visual C++6.0在VC\bin目录下 ...
- Windows Embedded Compact 2013升级:VS2013也能编译
IT之家(www.ithome.com):Windows Embedded Compact 2013升级:VS2013也能编译 今天,微软为Windows Embedded Compact 2013送 ...
- JsonPath详解
JsonPath is to JSON what XPATH is to XML, a simple way to extract parts of a given document. JsonPat ...
- extends:类似于java中的继承特征,extends="struts-default"
extends:类似于java中的继承特征,extends="struts-default"就是继承struts-default.xml,它里面定义了许多跳转类型.拦截器等一些常用 ...
- UVa 1471 (LIS变形) Defense Lines
题意: 给出一个序列,删掉它的一个连续子序列(该子序列可以为空),使得剩下的序列有最长的连续严格递增子序列. 分析: 这个可以看作lrj的<训练指南>P62中讲到的LIS的O(nlogn) ...
- Django提供后台接口的跨域问题
--> Django跨域 当使用Django仅用来开发后端接口,为前端提供JSON数据的时候,不可避免的要接受前端的POST请求.虽然Django以其强大易用的特定使用很广泛,但在跨域问题上却让 ...
- POJ 1815 Friendship ★(字典序最小点割集)
[题意]给出一个无向图,和图中的两个点s,t.求至少去掉几个点后才能使得s和t不连通,输出这样的点集并使其字典序最大. 不错的题,有助于更好的理解最小割和求解最小割的方法~ [思路] 问题模型很简单, ...