黑马程序员-JAVA高级(IO输入与输出)PART4
2014-02-15 23:09
281 查看
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
这部分内容的知识点为:
1.IO包中的其他几个类;
2.字符编码;
3.练习。
一、IO包中的其他几个类
1.对象的序列化:ObjectInputStream和ObjectOutputStream
2.管道流:PipedInputStream和PipedOutputStream
输入输出可以直接进行连接,通过结合线程使用。不要对这两个对象使用单线程,因为这样可能死锁线程。
3.RandomAccessFile
随机访问文件,自身具备读写的方法。
该类直接继承自Object,不算是IO体系中的子类,但因为读和写功能,它是IO包中成员。其内部封装了一个数组,通过指针对数组元素进行操作。
其实读写的原理就是内部封装了字节输入流和输出流。
通过构造函数可以看出,该类只能操作文件,包含模式:只读r,读写rw。
如果模式为只读r,只能去读取一个已经存在的文件,如果文件不存在,会出现异常而不会创建;如果模式为读写rw,如果要操作的文件不存在会自动创建,如果存在不会覆盖。
4.操作基本数据类型的流对象:DataInputStream和DataOutputStream
5.操作字节数组的流对象:ByteArrayInputStream和ByteArrayOutputStream
ByteArrayInputStream在构造的时候,需要接收数据源,而且数据源是一个字节数组。
ByteArrayOutputStream在构造的时候,不用定义数据目的,因为该对象内部已经封装了可变长度的字节数组,这就是数据目的。
因为这两个流对象操作的都是数组,没有使用系统资源,所以不用进行关闭操作。
二、编码
常见的编码表:
ASCII:美国标准信息交换码,用一个字节的7位表示;
ISO8859-1:拉丁码表(欧洲码表),用一个字节的8位表示;
GB2312:中国的中文编码表;
GBK:升级的中文编码表,融合更多中文字符;
Unicode:国际标准码表,融合多种文字。所有字符都用两个字节来表示,Java语言使用的就是Unicode。
UTF-8:最多用三个字节表示一个字符,可以是一个或两个字节。
1.转换流的字符编码
2.字符编码
编码:字符串变成字节数组
解码:字节数组变成字符串
以上代码编码解码的过程类似tomcat服务器中的编解码过程。tomcat服务器默认编码是iso8859-1,如果浏览器提交的数据是gbk编码的汉字,服务器收到后就是乱码,所以必须再次通过iso8859-1编码,然后再通过gbk解码才可以。但如果服务器端的编码默认是utf-8,就不可以这样做。
3.字符编码-联通
现象:在一个文本文件中仅仅输入“联通”两个字,保存之后再次打开的时候显示的是乱码。
解释:文本文件的默认编码是gbk,“联通”两个字通过gbk编码后是11000001 10101010 11001101 10101000,正好符合utf-8编码的形式,所以再次打开文本文件的时候会被误认为是utf-8编码而用utf-8解码,自然就显示乱码。
三、练习
需求:每个学生有三门课的成绩,从键盘按一定的格式输入学生的姓名和三门成绩(如zhangsan,38,89,98),计算出总成绩,并按总成绩的高低顺序把每个学生的信息存放在磁盘文件“stud.txt”中。
1.描述学生对象;
2.定义一个可操作学生对象的工具类。
思想:
1.获取键盘录入的一行数据,提取信息封装成学生对象;
2.因为要存储学生信息,所以使用集合,又因为要排序,所以用TreeSet对象;
3.将集合的信息写入文件中。
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
这部分内容的知识点为:
1.IO包中的其他几个类;
2.字符编码;
3.练习。
一、IO包中的其他几个类
1.对象的序列化:ObjectInputStream和ObjectOutputStream
2.管道流:PipedInputStream和PipedOutputStream
输入输出可以直接进行连接,通过结合线程使用。不要对这两个对象使用单线程,因为这样可能死锁线程。
3.RandomAccessFile
随机访问文件,自身具备读写的方法。
该类直接继承自Object,不算是IO体系中的子类,但因为读和写功能,它是IO包中成员。其内部封装了一个数组,通过指针对数组元素进行操作。
其实读写的原理就是内部封装了字节输入流和输出流。
通过构造函数可以看出,该类只能操作文件,包含模式:只读r,读写rw。
如果模式为只读r,只能去读取一个已经存在的文件,如果文件不存在,会出现异常而不会创建;如果模式为读写rw,如果要操作的文件不存在会自动创建,如果存在不会覆盖。
4.操作基本数据类型的流对象:DataInputStream和DataOutputStream
5.操作字节数组的流对象:ByteArrayInputStream和ByteArrayOutputStream
ByteArrayInputStream在构造的时候,需要接收数据源,而且数据源是一个字节数组。
ByteArrayOutputStream在构造的时候,不用定义数据目的,因为该对象内部已经封装了可变长度的字节数组,这就是数据目的。
因为这两个流对象操作的都是数组,没有使用系统资源,所以不用进行关闭操作。
二、编码
常见的编码表:
ASCII:美国标准信息交换码,用一个字节的7位表示;
ISO8859-1:拉丁码表(欧洲码表),用一个字节的8位表示;
GB2312:中国的中文编码表;
GBK:升级的中文编码表,融合更多中文字符;
Unicode:国际标准码表,融合多种文字。所有字符都用两个字节来表示,Java语言使用的就是Unicode。
UTF-8:最多用三个字节表示一个字符,可以是一个或两个字节。
1.转换流的字符编码
2.字符编码
编码:字符串变成字节数组
解码:字节数组变成字符串
以上代码编码解码的过程类似tomcat服务器中的编解码过程。tomcat服务器默认编码是iso8859-1,如果浏览器提交的数据是gbk编码的汉字,服务器收到后就是乱码,所以必须再次通过iso8859-1编码,然后再通过gbk解码才可以。但如果服务器端的编码默认是utf-8,就不可以这样做。
3.字符编码-联通
现象:在一个文本文件中仅仅输入“联通”两个字,保存之后再次打开的时候显示的是乱码。
解释:文本文件的默认编码是gbk,“联通”两个字通过gbk编码后是11000001 10101010 11001101 10101000,正好符合utf-8编码的形式,所以再次打开文本文件的时候会被误认为是utf-8编码而用utf-8解码,自然就显示乱码。
三、练习
需求:每个学生有三门课的成绩,从键盘按一定的格式输入学生的姓名和三门成绩(如zhangsan,38,89,98),计算出总成绩,并按总成绩的高低顺序把每个学生的信息存放在磁盘文件“stud.txt”中。
1.描述学生对象;
2.定义一个可操作学生对象的工具类。
思想:
1.获取键盘录入的一行数据,提取信息封装成学生对象;
2.因为要存储学生信息,所以使用集合,又因为要排序,所以用TreeSet对象;
3.将集合的信息写入文件中。
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
相关文章推荐
- 软件销售心得-送给自己卖软件的程序员
- some面试题一览
- 黑马程序员—枚举类
- 微软面试100题---将 二叉搜索树 转化成 有序的双向链表
- 微软面试100题---将 二叉搜索树 转化成 有序的双向链表
- 怎样花两年时间去面试一个人
- 黑马程序员——java集合中的ArrayList和LinkedList
- 黑马程序员-----动态代理Proxy
- 黑马程序员--高新技术--代理
- ios面试题(三)
- 来自码农的12个爱情添加剂
- (1)今天你求职了吗?
- 黑马程序员-JAVA高级(IO输入与输出)PART3
- 程序员须遵守的编程原则
- Android 面试知识
- 黑马程序员—— c#中的多线程
- 黑马程序员——c#中string字符串
- 黑马程序员——c#中的构造方法
- 黑马程序员——c#中的选择结构和循环结构
- 黑马程序员—— c#中的运算符