InputStreamReader 和 OutputStreamWriter类使用方法简单介绍,及演示。
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类使用方法简单介绍,及演示。的更多相关文章
- Android Mediaplayer各种属性和方法简单介绍
主要涉及类:MediaPlayer (1) 当一个MediaPlayer对象被创建或者调用reset()方法之后,它处于空闲状态,调用release()方法后处于结束状态 1,一个MediaPlaye ...
- java类中的static成员变量和static方法简单介绍,持续补充
一.静态成员变量 1.属于整个类而不是某个对象实例,所以可以直接通过类名和对象名去调用. 2.静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收 二.静态方 ...
- JS创建类的方法--简单易懂有实例
版权声明:本文为博主原创文章,转载请注明出处 Javascript是一种基于对象的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有Class. ...
- eclipse IDE使用git方法简单介绍
eclipse下使用git插件上传代码至github 1.eclipse下安装git eclipse git 插件的安装. 点击 Help->Install New Software-> ...
- awk基本使用方法简单介绍
之前说过sed, 今天来说awk, 它也是一个文本处理器. 是linux下的一个命令, 比sed更强大. 搞linux开发, 尤其是后台开发, 这个命令差点儿必需要用到. awk这三个字母分别代表其三 ...
- java 多线程 start方法 run方法 简单介绍。
一 start开启一个多线程, run 只是一个内部的方法. package com.aaa.threaddemo; /* * start方法的作用? * 在 Java中启动多线程调用的是start方 ...
- Java中的wait方法 简单介绍。
一 wait方法怎么用? package com.aaa.threaddemo; /* * 多线程中的wait方法? public final void wait() throws Interrupt ...
- python 子进程 subpocess 的使用方法简单介绍
python的子进程嘛,就是利用python打开一个子进程(当然像是一句废话),但是可能和我们理解的不太一样. 一:如何理解? 我们可能的理解:多开一个进程运行某个python函数(如果只想实现这个功 ...
- Python Appium 元素定位方法简单介绍
Python Appium 元素定位 常用的八种定位方法(与selenium通用) # id定位 driver.find_element_by_id() # name定位 driver.find_ ...
随机推荐
- Java Web Services (2) - 第2章 启动日志分析
ZHAOFLIU-Mac:dev liuzhaofu$ ./start --seed########################################################## ...
- Android实战技巧: ListView之ContextMenu无法弹出
问题 Activity中使用了ListView作为布局.当每一列表项中含有默认能获取焦点的子View时有可能会对ListView的某些事件有影响: 1. OnItemClick 2. OnItemLo ...
- NET Core RC2
.NET Core RC2/RTM 明确了时间表 .NET Core 经过了将近2年的开发,去年12月份发布的RC1版本,明确来说那只是一个beta版本,自从RC1发布以来,看到github里的RC2 ...
- XML序列化反序列化—常用类
public class XMLSerializer { #region (public) xml序列化 /// <summary> /// ...
- [C++]new和delete
Date:2014-1-5 Summary: C++中的动态内存创建与释放(这里就只记录C++中的new和delete了,其他的C风格操作就略过了) 单独记录new和delete的原因是为了学习时候关 ...
- 做一个牛XX的身份证号验证类(支持15位和18位)
原文:做一个牛XX的身份证号验证类(支持15位和18位) #region 是否合法的中国身份证号码 protected bool IsChineseID() { if (str.Length == 1 ...
- MySQL字符串函数、日期时间函数
MySQL字符串函数.日期时间函数 一.常见字符串函数: 1.CHAR_LENGTH 获取长度(字符为单位) 2.FORMAT 格式化 3.INSERT 替换的方式插入 4.INSTR 获取位 ...
- android水平循环滚动控件
CycleScrollView.java package com.example.test; import android.content.Context; import android.graphi ...
- Spark简述及基本架构
Spark简述 Spark发源于美国加州大学伯克利分校AMPLab的集群计算平台.它立足 于内存计算.从多迭代批量处理出发,兼收并蓄数据仓库.流处理和图计算等多种计算范式. 特点: 1.轻 Spark ...
- Enable OWIN Cross-origin Request
微软出了一套解决方式能够解决 "同意WebAPI的 CORS 请求" http://www.asp.net/web-api/overview/security/enabling-c ...