InputStreamReader 和 OutputStreamWriter类使用方法简单介绍。

一、InputStreamReader类

InputStreamReader 将字节流转换为字符流。是字节流通向字符流的桥梁。假设不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。

构造方法:

InputStreamReader isr = new InputStreamReader(InputStream in);//构造一个默认编码集的InputStreamReader类

InputStreamReader isr = new InputStreamReader(InputStream in,String charsetName);//构造一个指定编码集的InputStreamReader类。

參数 in对象通过 InputStream in = System.in;获得。//读取键盘上的数据。

或者   
InputStream in = new FileInputStream(String fileName);//读取文件里的数据。能够看出FileInputStream 为InputStream的子类。

主要方法:int read();//读取单个字符。

int read(char []cbuf);//将读取到的字符存到数组中。返回读取的字符数。

public static void transReadNoBuf() throws IOException {
/**
* 没有缓冲区,仅仅能使用read()方法。
*/
//读取字节流
// InputStream in = System.in;//读取键盘的输入。
InputStream in = new FileInputStream("D:\\demo.txt");//读取文件的数据。
//将字节流向字符流的转换。要启用从字节到字符的有效转换,能够提前从底层流读取很多其它的字节.
InputStreamReader isr = new InputStreamReader(in);//读取
// InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\demo.txt"));//综合到一句。 char []cha = new char[1024];
int len = isr.read(cha);
System.out.println(new String(cha,0,len));
isr.close(); }
public static void transReadByBuf() throws IOException {
/**
* 使用缓冲区 能够使用缓冲区对象的 read() 和 readLine()方法。
*/
//读取字节流
// InputStream in = System.in;//读取键盘上的数据
InputStream in = new FileInputStream("D:\\demo.txt");//读取文件上的数据。
//将字节流向字符流的转换。
InputStreamReader isr = new InputStreamReader(in);//读取
//创建字符流缓冲区
BufferedReader bufr = new BufferedReader(isr);//缓冲
// BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\demo.txt")));能够综合到一句。
/* int ch =0;
ch = bufr.read();
System.out.println((char)ch);*/
String line = null;
while((line = bufr.readLine())!=null){
System.out.println(line);
}
isr.close();
}

二、OutputStreamWriter类

OutputStreamWriter 将字节流转换为字符流。是字节流通向字符流的桥梁。假设不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。

构造方法:

OutputStreamWriter osw = new
OutputStreamWriter(OutputStream out);//构造一个默认编码集的OutputStreamWriter类

OutputStreamWriter osw = new
OutputStreamWriter(OutputStream out,String charsetName);//构造一个指定编码集的OutputStreamWriter类。

參数 out对象通过 InputStream out = System.out;获得。//打印到控制台上。

或者   
InputStream out = new FileoutputStream(String fileName);//输出到文件里。能够看出FileoutputStream 为outputStream的子类。

主要方法:void write(int c);//将单个字符写入。

viod write(String str,int off,int len);//将字符串某部分写入。

void flush();//将该流中的缓冲数据刷到目的地中去。

	public static void transWriteNoBuf() throws IOException {
OutputStream out = System.out;//打印到控制台
// OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件
OutputStreamWriter osr = new OutputStreamWriter(out);//输出
// OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//两句能够综合到一句。
// int ch = 97;//a
// int ch = 20320;//你
// osr.write(ch);
String str = "你好吗?";//你好吗?
osr.write(str);
osr.flush();
osr.close();
}
public static void transWriteByBuf() throws IOException {
// OutputStream out = System.out;//打印到控制台。
OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件。
OutputStreamWriter osr = new OutputStreamWriter(out);//输出
// OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//综合到一句。
BufferedWriter bufw = new BufferedWriter(osr);//缓冲
// int ch = 97;//a
// int ch = 20320;//你
// osr.write(ch);
String str = "你好吗?\r\n我非常好!";//你好吗?
bufw.write(str);
bufw.flush();
bufw.close();
}

 流转换程序1:

package IOtest;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter; public class TransStreamtest { /**
* 基本的类: in1, InputStream
* 创建对象 InputStream in = System.in;
* in2, InputStreamReader 没有readLine()方法
* 主要方法:
* read()读取单个字符,一个汉字也为一个字符。
* read(char[] cbuf)将字符读入数组。
* close().关闭此流和相关联资源。
* in3, BufferedReader 有read(),readLine()方法。
* out1, OutputStream
* 创建对象 OutputStream in = System.out;
* out2, OutputStreamWriter
* 主要方法:
* write(int c)//写入单个字符。
* write(char[] cbuf,int off,int len)//写入数组的某一部分
* write(String str,int off,int len)//写入字符串烦人某一部分。
* flush();//刷新该流中的缓冲。
* close();
* out3, BufferedWriteer 有Write(int ch),newLine()方法。
*
*
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// transReadByBuf();
// transReadNoBuf();
transWriteNoBuf();
// transWriteByBuf(); } public static void transWriteNoBuf() throws IOException {
OutputStream out = System.out;//打印到控制台
// OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件
OutputStreamWriter osr = new OutputStreamWriter(out);//输出
// OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//两句能够综合到一句。
// int ch = 97;//a
// int ch = 20320;//你
// osr.write(ch);
String str = "你好吗?";//你好吗?
osr.write(str);
osr.flush();
osr.close();
}
public static void transWriteByBuf() throws IOException {
// OutputStream out = System.out;//打印到控制台。
OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件。
OutputStreamWriter osr = new OutputStreamWriter(out);//输出
// OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//综合到一句。
BufferedWriter bufw = new BufferedWriter(osr);//缓冲
// int ch = 97;//a
// int ch = 20320;//你
// osr.write(ch);
String str = "你好吗?\r\n我非常好!";//你好吗?
bufw.write(str);
bufw.flush();
bufw.close();
} public static void transReadNoBuf() throws IOException {
/**
* 没有缓冲区,仅仅能使用read()方法。
*/
//读取字节流
// InputStream in = System.in;//读取键盘的输入。
InputStream in = new FileInputStream("D:\\demo.txt");//读取文件的数据。
//将字节流向字符流的转换。要启用从字节到字符的有效转换,能够提前从底层流读取很多其它的字节.
InputStreamReader isr = new InputStreamReader(in);//读取
// InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\demo.txt"));//综合到一句。 char []cha = new char[1024];
int len = isr.read(cha);
System.out.println(new String(cha,0,len));
isr.close();
} public static void transReadByBuf() throws IOException {
/**
* 使用缓冲区 能够使用缓冲区对象的 read() 和 readLine()方法。
*/
//读取字节流
// InputStream in = System.in;//读取键盘上的数据
InputStream in = new FileInputStream("D:\\demo.txt");//读取文件上的数据。
//将字节流向字符流的转换。
InputStreamReader isr = new InputStreamReader(in);//读取
//创建字符流缓冲区
BufferedReader bufr = new BufferedReader(isr);//缓冲
// BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\demo.txt")));能够综合到一句。
/* int ch =0;
ch = bufr.read();
System.out.println((char)ch);*/
String line = null;
while((line = bufr.readLine())!=null){
System.out.println(line);
}
isr.close();
}
}

 流转换程序2:

package readKey;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter; public class TransStreamDemo3 { /**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// writeText_1();
// writeText_2();
// writeText_3();
// ReadTest_1();
// ReadTest_2();
// ReadTest_3(); } public static void ReadTest_3() throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\utf-8.txt"),"UTF-8");
char []ch = new char[20];
int len = isr.read(ch);
System.out.println(new String(ch,0,len) );
isr.close(); }
public static void ReadTest_2() throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\utf-8.txt"),"GBK");
char []ch = new char[20];
int len = isr.read(ch);
System.out.println(new String(ch,0,len) );
isr.close(); }
public static void ReadTest_1() throws IOException {
FileReader fr = new FileReader("D:\\demo.txt");
char []ch = new char[20];
int len = fr.read(ch);
System.out.println(new String(ch,0,len) );
fr.close();
} public static void writeText_3() throws IOException {
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\utf-8.txt"),"UTF-8");
osw.write("你好吗");
osw.close();
} public static void writeText_2() throws IOException {
FileWriter fw = new FileWriter("D:\\gbk1.txt");
fw.write("你好啊");
fw.close();
} public static void writeText_1() throws IOException {
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\gbk.txt"),"GBK");
/*
*和上面的等同
* FileWriter fw = new FileWriter("D:\\gbk1.txt");
* 操作文件的字节流 + 默认的编码表
*/
osw.write("你好吗");
osw.close();
}
}

InputStreamReader 和 OutputStreamWriter类使用方法简单介绍,及演示。的更多相关文章

  1. Android Mediaplayer各种属性和方法简单介绍

    主要涉及类:MediaPlayer (1) 当一个MediaPlayer对象被创建或者调用reset()方法之后,它处于空闲状态,调用release()方法后处于结束状态 1,一个MediaPlaye ...

  2. java类中的static成员变量和static方法简单介绍,持续补充

    一.静态成员变量 1.属于整个类而不是某个对象实例,所以可以直接通过类名和对象名去调用. 2.静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收 二.静态方 ...

  3. JS创建类的方法--简单易懂有实例

    版权声明:本文为博主原创文章,转载请注明出处 Javascript是一种基于对象的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有Class. ...

  4. eclipse IDE使用git方法简单介绍

    eclipse下使用git插件上传代码至github 1.eclipse下安装git eclipse  git 插件的安装. 点击 Help->Install New Software-> ...

  5. awk基本使用方法简单介绍

    之前说过sed, 今天来说awk, 它也是一个文本处理器. 是linux下的一个命令, 比sed更强大. 搞linux开发, 尤其是后台开发, 这个命令差点儿必需要用到. awk这三个字母分别代表其三 ...

  6. java 多线程 start方法 run方法 简单介绍。

    一 start开启一个多线程, run 只是一个内部的方法. package com.aaa.threaddemo; /* * start方法的作用? * 在 Java中启动多线程调用的是start方 ...

  7. Java中的wait方法 简单介绍。

    一 wait方法怎么用? package com.aaa.threaddemo; /* * 多线程中的wait方法? public final void wait() throws Interrupt ...

  8. python 子进程 subpocess 的使用方法简单介绍

    python的子进程嘛,就是利用python打开一个子进程(当然像是一句废话),但是可能和我们理解的不太一样. 一:如何理解? 我们可能的理解:多开一个进程运行某个python函数(如果只想实现这个功 ...

  9. Python Appium 元素定位方法简单介绍

    Python  Appium  元素定位 常用的八种定位方法(与selenium通用) # id定位 driver.find_element_by_id() # name定位 driver.find_ ...

随机推荐

  1. 在实体类中将数据库中数据类型为CLOB的数据转化成String类型

    @Lob     @Basic(fetch = FetchType.EAGER)     @Column(name = "JYAQ", columnDefinition = &qu ...

  2. [置顶] head first 设计模式之----Observer pattern

    浅谈设计模式之----观察者模式      观察者模式也是我们日常程序编写中碰到比较多的一种设计模式.首先,所谓观察者模式定义就是指:在对象之间定义了一对多的依赖,这样一来,当一个对象的状态发生变化的 ...

  3. Java的一些基础小知识之JVM与GC (转)

    一.JVM是什么 Java虚拟机(英语:Java Virtual Machine,缩写为JVM),又名爪哇虚拟器,一种能够运行Java bytecode的虚拟机,以堆栈结构机器来进行实做.最早由太阳微 ...

  4. opencv 边缘羽化,边缘过渡

    原地址:http://blog.csdn.net/sogarme/article/details/12942971 当把前景和背景分开时,黑色代表背景,白色代表前景,如下图1—记作img1 为了平滑过 ...

  5. 14.3.3 Locks Set by Different SQL Statements in InnoDB 不同的SQL语句在InnoDB里的锁设置

    14.3.3 Locks Set by Different SQL Statements in InnoDB 不同的SQL语句在InnoDB里的锁设置 locking read, 一个UPDATE,或 ...

  6. ZooKeeper的安装、配置、启动和使用(一)——单机模式

    ZooKeeper的安装.配置.启动和使用(一)——单机模式 ZooKeeper的安装非常简单,它的工作模式分为单机模式.集群模式和伪集群模式,本博客旨在总结ZooKeeper单机模式下如何安装.配置 ...

  7. RFC2889转发性能測试用例设计和自己主动化脚本实现

    一.203_TC_FrameRate-1.tcl set chassisAddr 10.132.238.190 set islot 1 set portList {9 10} ;#端口的排列顺序是po ...

  8. oracle 之 内存—鞭辟近里(四)

    oracle 之 内存—鞭辟近里(四) 今天是2013-07-11日,首先我非常感谢我的哥们也是我的网友杨工,非常感谢他能在大数据库内帮我执行一下我所需要的信息.就是他说的网络真是一个互助友爱的平台. ...

  9. GIS Tools for Hadoop 详细介绍

    2013年Esri美国在开发者大会上演示了GIS数据结合Hadoop分析的一个示例,这个示例赢得了听众的阵阵掌声,我们也许对GIS不是很陌生,但是对Hadoop却不是很清楚,其实Esri是用Java开 ...

  10. Remote Desktop Organizer – 管理组织远程桌面 - 小众软件

    http://www.appinn.com/remote-desktop-organizer/