InputStream和OutputStream
2014-02-20 19:56
309 查看
InputStream和OutputStream都是字节流也就是每次读取或者写入一个字节
看如下程序
a.txt中的内容如下
控制台打印如下:
b.txt中的内容和a.txt中的内容相同
为什么控制台和b.txt中的内容不同呢
原因是TXT的默认编码是ANSI即字母占一个字节,中文占两个字节 如下图
当我们read的时候也就是程序a变量每次获得十六进制编码如下图
可以看出原来的编码和现在的编码相同都是ANSI 但是当我们把a打印print的时候会发现字母正确,中文乱码
根据API文档我们可以发现
这里的默认编码中文环境下为GBK即使用GBK编码 再交给控制台输出但是这里交给他的参数是一个字节 所以出错乱码
而写入b.txt时是将a.txt编码原封不动的写入的所以不会造成错误
看如下程序
public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub InputStream read=new FileInputStream("C:\\a.txt"); OutputStream writer=new FileOutputStream("C:\\b.txt"); int a; while((a=read.read())!=-1) { Integer.toHexString(a); System.out.print((char)a); writer.write(a); } }
a.txt中的内容如下
dad问字大点dasd dasdkda好的
控制台打印如下:
b.txt中的内容和a.txt中的内容相同
为什么控制台和b.txt中的内容不同呢
原因是TXT的默认编码是ANSI即字母占一个字节,中文占两个字节 如下图
当我们read的时候也就是程序a变量每次获得十六进制编码如下图
可以看出原来的编码和现在的编码相同都是ANSI 但是当我们把a打印print的时候会发现字母正确,中文乱码
根据API文档我们可以发现
public void print(char c) 打印字符。按照平台的默认字符编码将字符转换为一个或多个字节,并完全以 write(int) 方法的方式写入这些字节。 参数: c - 要打印的 char
这里的默认编码中文环境下为GBK即使用GBK编码 再交给控制台输出但是这里交给他的参数是一个字节 所以出错乱码
而写入b.txt时是将a.txt编码原封不动的写入的所以不会造成错误
相关文章推荐
- 使用流进行通讯的一种可能犯的错误 (InputStream + OutputStream)
- ObjectOutputStream/ObjectInputStream
- InputStreamReader/OutputStreamWriter乱码问题解决
- I/O流--转换流:OutputStreamWriter和InputStreamReader使用
- 8IO流的分类字符流复制文本文件InputStream和outputStream的概述:分别使用字符流和字节流进行图片的复制字节流复制文本文件字节打印流 PrintStream 字符打印流 Prin
- java中outputStream与inputStream的相互转换
- InputStreamReader And OutputStreamWriter
- InputStream和OutputStream
- InputStreamReader类和OutputStreamWriter类学习笔记
- OutputStream 转 InputStream
- JAVA I/O中面向字节的InputStream和OutputStream以及面向字符的Reader和Writer简介
- java inputStream ,outputStream
- Java IO--字节流与字符流OutputStream/InputStream/Writer/Reader
- Java_io体系之ObjectInputStream、ObjectOutputStream简介、走进源码及示例——11
- Java 字节流实现文件读写操作(InputStream-OutputStream)
- inputstream和outputstream读写数据模板代码
- InputStream、OutputStream、String的相互转换
- Java——InputStreamReader&OutputStreamWriter字符流实现文本文件复制
- Java使用GZIP进行压缩和解压缩(GZIPOutputStream,GZIPInputStream)
- java的InputStream和OutputStream的理解