java文件传输基础:字节字符流的转换OutputStreamWriter/InputStreamReader
来源:互联网 发布:数据库小图标 编辑:程序博客网 时间:2024/06/05 14:56
字符流
今天我们来讲解一下java文件传输基础中的字符流的操作,首先要对一下几个问题有所了解:
1、编码问题
2、认识文本和文本文件:
java中的文本(char)其实是一个十六位无符号的整数,是字符unicode编码(双字节编码),文件是byte byte byte的数据系列。文本文件则是文本(char)序列按照某种编码方案(utf-8 utf-16be gbk)序列化为byte的存储结果
3、字符流(Reader Writer)——操作的是文本,文本文件,默认按照gbk编码解析。字符流一次处理一个字符,字符的底层仍然是基本的字节序列
4、字符流的基本实现:InputStreamReader完成byte解析为char流,按照编码解析;OutputStreamWriter提供char流到byte流,按照编码处理
首先我们通过一个程序进行测试:
public static void main(String[] args) throws IOException { FileInputStream in = new FileInputStream("D:\\log_network.txt"); InputStreamReader isr = new InputStreamReader(in, "utf-8");// 默认项目编码,文件编码 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\log_net.txt"), "utf-8"); char[] buf = new char[8 * 1024]; int a; // 批量读取从第0个位置放入buf字符数组中的字符 while ((a = isr.read(buf, 0, buf.length)) != -1) { String s = new String(buf, 0, a); System.out.println(s); osw.write(buf, 0, a);//将数组内容写入文件 osw.flush(); } osw.close(); isr.close(); }
运行结果为文件内容被输出,并且文件内容拷贝成功
该项目中涉及到的编码问题如下:
1、java项目的默认编码为GBK,中文机器中的文本文件编码为ANSI(ANSI为为了适应各国语言不同而产生的编码,在中文中,ANSI对应的编码为GBK),因此我们利用项目默认编码按照字符流来读取文本文件是成功的
2、现我们创建一个UTF-8编码的文本文件,此时用项目默认编码GBK来进行解析会出现乱码现象。因此,我们指定读取文件时的编码方式也为UTF-8,此时同样可以正确读取文件
阅读全文
0 0
- java文件传输基础:字节字符流的转换OutputStreamWriter/InputStreamReader
- 【Java.IO】I/O 字节 <-> 字符转换流 —— InputStreamReader,OutputStreamWriter(FileReader,FileWriter)
- Java IO操作——字节-字符转换流(OutputStreamWriter、InputStreamReader)
- 黑马程序员——java基础 io 转换流的应用(InputStreamReader,OutputStreamWriter)
- Java基础---Java---IO流-----读取键盘录入、InputStreamReader、转换流、OutputStreamWriter、InputStreamReader
- 转换流InputStreamReader、OutputStreamWriter
- Java IO--字节-字符流转换OutputStreamWriter/InputStreamReader
- java基础之IO转换流--OutputStreamWriter(字符流通往字节流,可以指定字符编码的IO流对象)
- Java - IO - 转换流 - InputStreamReader - OutputStreamWriter
- 转换流的使用(InputStreamReader,OutputStreamWriter)
- 8.Java基础:常见IO流----->字符流中的转化流:OutputStreamWriter、InputStreamReader
- 转换流(OutputStreamWriter,InputStreamReader)
- InputStreamReader与OutputStreamWriter转换流
- InputStreamReader和OutputStreamWriter转换流
- 转换流(OutputStreamWriter 和 InputStreamReader )
- InputStreamReader和OutputStreamWriter字符编码转换
- Java——InputStreamReader&OutputStreamWriter字符流实现文本文件复制
- Java IO流->处理流->转换流:InputStreamReader&OutputStreamWriter
- BZOJ 2201 期望DP 解题报告
- 浅谈Java中Collection、Iterable、List、ArrayList间的关系
- JSP之3大指令、9大内置对象、4大域对象、动作标签
- 定义常量类
- HDU3265(线段树+扫描线+挖空矩形面积并)
- java文件传输基础:字节字符流的转换OutputStreamWriter/InputStreamReader
- 运维之红帽工程师篇-----4. 配置Samba共享 、 配置NFS共享
- 《大话设计模式》——学习笔记之"创建型模式"(单例&工厂方法&抽象工厂&建造者&原型)
- js 以 ajax 的方式导入 XML 或其他文件
- support-v7升级到23.2.0对Fragment的一个影响
- 目标追踪综述总结
- 百万励志畅销书《从日薪五元到亿万身家》有声书即将推出
- pascal voc2012数据集介绍
- UE4创建MiniMap (I) -- 简单实现