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的缓冲区的存在就是为了提高效率,把要操作的 ...
随机推荐
- HDU4612+Tarjan缩点+BFS求树的直径
tarjan+缩点+树的直径题意:给出n个点和m条边的图,存在重边,问加一条边以后,剩下的桥的数量最少为多少.先tarjan缩点,再在这棵树上求直径.加的边即是连接这条直径的两端. /* tarjan ...
- Oracle 学习笔记(一)
1.连接数据库命令: conn 用户名/密码,当用特权身份连接时,要加上as sysdba 2.修改密码: passw(ord),如果要修改其他人的密码,需要用sys或者system登录 3.显示当前 ...
- 版本管理工具介绍—Git篇
前篇 如题,提起版本管理工具相信做C#开发 还是对Git比较陌生 我们可能更熟悉vss.svn 记录此文的目的 更是为以后的前段学习做基础 现在的技术比如nodeJs angularJs ==都 ...
- js 中多维数组的深拷贝的多种实现方式
因为javascript分原始类型与引用类型(与java.c#类似).Array是引用类型,所以直接用=号赋值的话,只是把源数组的地址(或叫指针)赋值给目的数组,并没有实现数组的数据的拷贝.另外对一维 ...
- WPF控件模板和数据模板
来自:http://www.th7.cn/Program/WPF/2011/12/21/51676.shtml ControlTemplate用于描述控件本身. 使用TemplateBinding来绑 ...
- 比nerdtree更好的文件浏览器:vimfiler
通过:VimFilerExplorer来打开一个文件浏览器 h:收起 t:展开 -:close 回车:进入或展开 空格:收起
- Rabbitmq中rabbitmqctl的常用命令
学习rabbitmq,原理之后第一个要掌握的就是rabbitmqctl这个命令的用法了,rabbitmq的管理功能最全的就是rabbitmqctl命令了,当然还有HTTP API和UI两种管理手段. ...
- git源码中的Makefile
https://github.com/chucklu/GitStudy 这链接里面的第一次提交 [chucklu@localhost GitStudy]$ cat Makefile CFLAGS= ...
- 函数fsp_alloc_seg_inode_page
分配一个新的inode page /**********************************************************************//** Allocat ...
- HTTP编程(六)
此为网络编程的一个系列,后续会把内容补上.....