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();}
}


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回溯算法n皇后问题_使用回溯算法的N Queen问题和解决方案

回溯算法n皇后问题N-皇后问题 (N - Queens problem) The n – queen problem is the generalized problem of 8-queens or 4 – queen’s problem. Here, the n – queens are placed on a n * n chess board, which means that the chessboard has n rows and n columns and t…

天气预报HTML代码

天气预报HTML代码<iframe height"200" src"http://weather.news.qq.com/inc/ss218.htm" frameborder"0" width"200" scrolling"no"></iframe><iframe width"420" scrolling"no" height&…

PHP源码安装及配置——以fastCGI的方式与httpd整合

在前一篇博文中介绍了LAMP的安装及配置。这里专门介绍PHP以fastCGI的方式与httpd整合的情况下&#xff0c;具体如何编译及配置。而且假定httpd、mysql均如前一篇博文介绍的安装配置完毕。php也采取一样版本的源码包php-5.6.1.tar.bz2。1. 编译安装php# tar xf php-5.6.1.tar.b…

超简单的分布式ID生成方案!美团开源框架介绍

目录阐述背景Leaf snowflake 模式介绍Leaf segment 模式介绍Leaf 改造支持 RPC阐述背景不吹嘘&#xff0c;不夸张&#xff0c;项目中用到 ID 生成的场景确实挺多。比如业务要做幂等的时候&#xff0c;如果没有合适的业务字段去做唯一标识&#xff0c;那就需要单独生成一个唯一的…

高质量的c源代码

现在自由软件及开源软件越来越流行&#xff0c;有大量的附带源程序的软件可以使用&#xff0c;这给我们学习软件开发提供了更多方便。但另一方面&#xff0c;也使得找到高质量的软件越来越不易。Landon Curt Noll 推荐 阅读David Ingalls Bell 的源代码。fefe 网站很推崇D.J.Be…

Java LinkedList公共布尔提供(对象o)方法(带示例)

LinkedList公共布尔提供(对象o)方法 (LinkedList public boolean offer(Object o) method) This method is available in package java.util.LinkedList.offer(Object o). 软件包java.util.LinkedList.offer(Object o)中提供了此方法。 This method is used to adds a specifie…

教你写Bug,常见的 OOM 异常分析

在《Java虚拟机规范》的规定里&#xff0c;除了程序计数器外&#xff0c;虚拟机内存的其他几个运行时区域都有发生 OutOfMemoryError 异常的可能。本篇主要包括如下 OOM 的介绍和示例&#xff1a;java.lang.StackOverflowErrorjava.lang.OutOfMemoryError: Java heap spacejava…

elf文件格式实例解析

试验环境&#xff1a;archlinux 速龙3000&#xff08;即x86兼容32位处理器&#xff09; 必须软件&#xff1a;gcc binutils 参考资料&#xff1a; System V application binary interface ELF Format &#xff08;mirror txt format ) Hello,world in less than 20 bytes…

离散数学关系的性质_关系和关系的性质| 离散数学

离散数学关系的性质笛卡尔积(A * B不等于B * A) (Cartesian product (A*B not equal to B*A)) Cartesian product denoted by * is a binary operator which is usually applied between sets. It is a set of ordered pairs where the first member of the pair belongs to th…

HTML,,,音乐,html embed用法

第一种&#xff1a;在页面代码中的<head></head>之间加入<bgsound src"音乐url" loop"-1"> 这段代码。 在这里要说的是&#xff0c;“loop”中的数值是音乐循环的次数&#xff0c;可设置为任意正整数&#xff0c;若设为“-1”的话&#…

少年开始学习c#编程,过路的大神请担待!

这应该真正算开始学习编程&#xff0c; 安装好了 linux&#xff0c; 开通了博客员的博客&#xff0c; 同时今天也需要把sublime安好&#xff0c; 安装MonoDevelop Codeblocks mysql-workbench 配置好相应的c#的环境&#xff0c; 在linux下安装了vmware&#xff0c; 也安装了一个…

池化技术到达有多牛?看了线程和线程池的对比吓我一跳!

这是我的第 82 篇原创文章作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;情商高的人是能洞察并照顾到身边所有人的情绪&#xff0c;而好的文章应该让所有人都能看懂。尼采曾…

小型elf Hello,World程序

参考链接&#xff1a;http://timelessname.com/elfbin/ 环境要求&#xff1a;linux gcc nasm hexcurse&#xff08;用来修改elf文件内容&#xff09; 先尝试用C语言写"Hello,World"程序(名为chello.c)&#xff1a; #include <stdio.h> int main(void) {printf…

spearman相关性_Spearman的相关性及其在机器学习中的意义

spearman相关性This article is about correlation and its implication in the machine learning. In my previous article, I have discussed Pearson’s correlation coefficient and later we have written a code to show the usefulness of finding Pearson’s correlati…

[java] 找出字符串中出现最多的字符和出现的次数

逛园子看到一童鞋做的华为上机题目&#xff0c;写来好长的代码&#xff0c;懒得看&#xff0c;感觉不可能这么难&#xff0c;于是动手敲了下。 import java.util.Scanner;public class StringTest {/*** param args*/public static void main(String[] args) {// TODO Auto-gen…

WIN7开启WIFI

开启windows 7的隐藏功能&#xff1a;虚拟WiFi和SoftAP&#xff08;即虚拟无线AP&#xff09;&#xff0c;就可以让电脑变成无线路由器&#xff0c;实现共享上网&#xff0c;节省网费和路由器购买费。主机设置如下&#xff1a; 【第一步】开始->在搜索栏中输入‘CMD’->右…

被问哭了,一位小姐姐的阿里面经!(附部分答案)

这篇文章是一位 女读者 &#xff08;加粗&#xff01;太难得&#xff09;的面试阿里的经历分享&#xff0c;虽然第二面就失败了&#xff0c;但是这样的经历对自己帮助应该还是很大的。下面的一些问题非常具有代表性&#xff0c;部分问题我简单做了修改&#xff08;有些问题表述…

Python程序不使用函数将字符大写

In this article, we will go for capitalizing the characters i.e. conversion from lowercase to uppercase without using any function. This article is based on the concept that how inbuilt function perform this task for us? 在本文中&#xff0c;我们将大写字符…

C语言,你真的弄懂了么?

程序&#xff08;来源 &#xff09;&#xff1a; #include <stdio.h>int main(void) {int x[4];printf("%p\n", (void*) (x));printf("%p\n", (void*) (x 1));printf("%p\n", (void*) (&x));printf("%p\n", (void*) (&…

Oracle自增序列

SQL Server中数据库可以自增字段&#xff0c;但是Oracle中没有这个选项&#xff0c;实际应用中我们可以使用序列(Sequence)实现想要的功能。创建Sequence语法如下&#xff1a;CREATE SEQUENCE SEQUENCE_NAME? START WITH 1 --从 1 开始INCREMENT BY 1 --每次增加 1NOMA…