流的操作规律:

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流操作之转换流的更多相关文章

  1. Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter)

    Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.转换流概述 我们之前 ...

  2. java基础53 IO流技术(转换流)

    1.转换流 1.输入字节的转换流:InputStreamReader是字节流转为字符流的桥梁,可以把输入字节流转换为输入字符流    2.输出字节流的转换流:OutputStreamWriter是字符 ...

  3. 黑马程序员——JAVA基础之IO流缓冲区,转换流,字节流

    ------- android培训.java培训.期待与您交流! ---------- 字符流的缓冲区        缓冲区的出现提高了对数据的读写效率. 对应类 •  BufferedWriter ...

  4. Java 持久化操作之 --io流与序列化

    1)File类操作文件的属性 1.File类的常用方法 1. 文件的绝对完整路径:getAbsolutePath() 文件名:getName() 文件相对路径:getPath() 文件的上一级目录:g ...

  5. 6.4(java学习笔记)转换流

    一.乱码问题 我们来看下列例子: public class ConStream { //当前平台默认采用GBK public static void main(String[] args){ Stri ...

  6. Java——IO类,转换流简化写法

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  7. Java - io输入输出流 --转换流

    转换流  转换输出流 OutputStreamWriter: 说明: /* * OutputStreamWriter 这个类的作用 * 就是指定输出流的编码格式 * 这个类的构造方法 需要传递 一个输 ...

  8. File类与常用IO流第九章——转换流

    第九章.转换流 字节编码和字符集 编码:按照某种规则将字符以二进制存储到计算机中. 解码:将存储在计算机中的二进制数按照某种规则解析显示出来. 字符编码:Character Encoding ,就是一 ...

  9. Java I/O流操作(二)---缓冲流[转]

    转自:http://blog.csdn.net/johnny901114/article/details/8710403 一.BufferWriter类 IO的缓冲区的存在就是为了提高效率,把要操作的 ...

随机推荐

  1. POJ2348+博弈

    /* 博弈 关键态:较大数是较小数的2倍以上. */ #include<stdio.h> #include<string.h> #include<stdlib.h> ...

  2. What is the innovator’s solution——什么才是创新的解决方案2

    前略:http://www.cnblogs.com/Kassadin/p/4233497.html 案例1 从书上的一个案例开始: 让我们来看看AT&T公司(美国电话电报公司)的案例吧.198 ...

  3. 李洪强iOS开发之使用 Reachability 检测网络

    1.iOS平台是按照一直有网络连接的思路来设计的,开发者利用这一特点创造了很多优秀的第三方应用. 大多数的iOS应用都需要联网,甚至有些应用严重依赖网络,没有网络就无法正常工作. 2.在你的应用尝试通 ...

  4. PHP开篇之环境的搭建

    PHP开篇之环境的搭建 Wamp软件下载:http://www.wampserver.com/ 此时是2.5版本 下载下来一键安装. 安装有个主意 这里先不用管 或者smtp@qq.com 13643 ...

  5. redisb并发访问慢出现的问题

    最近项目一上线,就问题颇多,本地测试,ok,上线后,大用户量的时候,顶不住.用了一个礼拜的时间发现的问题,总结下来. 项目是netty4.0,reids2.8,nginx等框架.目前是4台proxy服 ...

  6. NFC(5)编写NFC程序的基本步骤

    1,设置权限 <uses-permission android:name="android.permission.NFC" /> 2,限制Android版本 <u ...

  7. PHP操作FTP类 (上传下载移动创建等)

    使用PHP操作FTP-用法 Php代码 收藏代码 <? // 联接FTP服务器 $conn = ftp_connect(ftp.server.com); // 使用username和passwo ...

  8. C#.Net 如何动态加载与卸载程序集(.dll或者.exe)6-----在不卸载程序域的前提下替换程序集文件。

    当某个程序集文件被载入AppDomain,该文件在AppDomain.Unload之前是不能被替换和删除的.使用AppDomainSetup的影像复制功能可以实现在不卸载程序的情况下替换或者删除程序集 ...

  9. Extension Method[上篇]

    在C#3.0中,引入了一些列新的特性,比如: Implicitly typed local variable, Extension method,Lambda expression, Object i ...

  10. 【HDOJ】4363 Draw and paint

    看题解解的.将着色方案映射为40*40*5*5*5*5*2个状态,40*40表示n*m,5*5*5*5表示上下左右相邻块的颜色,0表示未着色.2表示横切或者竖切.基本思路是记忆化搜索然后去重,关键点是 ...