IO流 总结三
编码:字符串变成字节数组。
解码:字节数组变成字符串
String --> byte[]; str.getBytes();
byte --> String: new String(bytep[]);
如果编码的时候产生错误,就放弃
如果解码的时候产生错误,就编一次,解一次(通用方法)[对编码的时候用gbk,解码的
时候用utf-8,这种方法不行,因为utf-8会去找相似的字,结果源码就会变掉]
在记事本里输入联通两个字,就会变成乱码,因为这两个字符合联通的编码形式
符合UTF-8的编码规则
没有方法的接口称之为标记接口
FileOutputStream out;
out.write(256) 只是输出最低8位
打开记事本其实是解码的过程
objectInputStream与ObjectOutputStream
被操作的对象需要实现Serizlizable(标记接口); static final long serialVersionUID = 42L;
Serizlizable接口的标签
将堆内存中的对象转化为硬盘上的
所以静态的不能序列化(也称为持久化存储),,在方法区
加关键字transient 也不能序列化
管道流:
PipedInputStream 和PipedOutputStream
输入输出可以直接进行连接,通过结合线程使用
RandomAccessFile
随机访问文件,自身具备读写的方法。
通过skipBytes(int
x),seek (int x) 来达到随机访问
该类不是IO体系中的子类。
而是直接继承来自Object
但是它是IO包中成员,因为它具备读和写功能。
内部封装了一个数组,而且通过指针对数组元素进行操作
可以通过getFilePointer获取指针信息
同时可以通过seek改变指针的位置
其实文成读写的原理就是内部封装了字节输入流和输出流
通过构造函数可以看出,该类只能操作文件
如果模式为只读r,不会创建文件,会去读取一个已存在文件,如果该文件不存在
则会出现异常。
如果模式为rw,操作的文件不存在会自动创建,存在会创建,存在则不会覆盖
通过seek方法,调整对象中指针,a.write(int) 输出的是参数的最低8位,
可以用于操作基本数据类型的流对象
DataInputStream与DataOutputStream 如果以writeUTF只能以对应的方法来读取。不能用转换流,writeUTF用的UTF-8修改版
如果是字节流,存入到记事本里,系统会选择编码表来查,所以都是乱码。
操作基本数据类型
DataInputStream与DataOutputStream
操作字节数组
ByteArrayInpuStream 与
ByteArrayOutputStream
操作字符数组
CharArrayReader与CharArrayWrite
操作字符串
StringReader与StringWriter
ByteArrayInputStream: 在构造的时候,需要接收数据源,而且数据源是一个字节数组
ByteArrayOutputStream: 在构造的时候,不用定义数据目的,因为该对象中已经内部封装了可变长度的自己数组,这就是数据目的地。
因为这两个流对象都操作数组,并没有使用系统资源,所以,不用进行close关闭。
源设备:
键盘 System.in 硬盘 FileStream 内存 ArrayStream
目的设备:
控制台
System.out 硬盘 FileStream 内存 ArrayStream
用流的思想来操作数组
计算机只能识别二进制数据,早起又来是电信号
为了方便应用计算机,让它可以识别各个国家的文字,就将各个国家的文字用数字来表示
并一一对应,形成一张表
这就是编码表
ASCII: 美国标准信息交换码
用一个字节的7位可表示
ISO8859-1 :
拉丁码表,欧洲码表, 用一个字节的8位表示
GB2312:
中国的中文码表
GBK:
中国的中文编码表升级,融合了更多的中文文字字符号
Unicode:
国标标准码,融合了多种文字;
UTF-8:
最多用三个字节来表示一个字符
中间其实走过Unicode ,用你好来测试
IO流 总结三的更多相关文章
- Java中的IO流(三)
上一篇<Java中的IO流(二)>把学习Java的字符流以及转换流作了一下记录,从本篇开始将把IO流中对文件或文件夹操作的对象File类的学习进行一下记录. 一,File类的构造函数及字段 ...
- java基础(二十)IO流(三)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- IO流(三)
五.Java序列化 概述 Java序列化是指把Java对象转换为字节序列的过程 Java反序列化是指把字节序列恢复为Java对象的过程 当两个Java进程进行通信时,发送方需要把这个Java对象转换为 ...
- J03-Java IO流总结三 《 FileInputStream和FileOutputStream 》
1. FileInputStream FileInputStream是一个文件输入节点流,它是一个字节流,它的作用是将磁盘文件的内容读取到内存中. FileInputStream的父类是Inpu ...
- File类与常用IO流第三章IO流概述
一:以内存为基准,按照数据的流动方向,流向内存为输入(读取数据),流出内存为输出.IO流有四大顶级父类: IO流四大顶级父类 输入流 输出流 字节流 字节输入流 InputStream 字节输出流 ...
- IO流(三)其他流与File类
1:其他的流 1: DataOutputStream ;多了一些操作基本数据类型的功能 DataInputStream:读取文件. 用DataOutputStream流写进去的数据,就用DataInp ...
- 05 IO流(三)——IO流标准流程
流程 选择源 选择合适的流 操作 关闭流:先打开的后关闭 演示 import java.io.File; import java.io.InputStream; import java.io.File ...
- Java基础IO流(三)字符流
字符流: 文本和文本文件: java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)文件是byte byte byte....的数据序列,而文本文件是文本(char)序列 ...
- java IO流 (三) 节点流(或文件流)
1.FileReader/FileWriter的使用:1.1 FileReader的使用 /* 将day09下的hello.txt文件内容读入程序中,并输出到控制台 说明点: 1. read()的理解 ...
随机推荐
- ubuntu下phpstorm无法输入中文的解决办法
http://blog.csdn.net/woshiliulei0/article/details/51657356 今天期待已久的搜狗输入法linux版上线了,对于我们这种之前用习惯了搜狗输入法的屌 ...
- c# 基础之数组(包含三维数组)
public enum ChessType { White = , None=, Black=, } class Program { static void Main(string[] args) { ...
- C#窗体->>随机四则运算(计算表达式)
用户需求: 程序能接收用户输入的整数答案,并判断对错程序结束时,统计出答对.答错的题目数量.补充说明:0——10的整数是随机生成的用户可以选择四则运算中的一种用户可以结束程序的运行,并显示统计结果.在 ...
- phpcms标签大全V9
转自:http://blog.csdn.net/cloudday/article/details/7343448调用头部 尾部 {template "content"," ...
- iOS - UISlider
前言 NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UISlider : UIControl <NSCoding> @a ...
- 批量创建客户主数据函数SD_CUSTOMER_MAINTAIN_ALL
分享一下批创建客户主数据函数:SD_CUSTOMER_MAINTAIN_ALL TABLES:T077D,ZCITY,T005S,BNKA,ADRC,KNA1. DATA: TMP_KTOKD(4) ...
- hdu3007Buried memory(最小圆覆盖)
链接 普通的暴力复杂度达到O(n^4),对于这题肯定是不行的. 解法:随机增量算法 参考http://www.2cto.com/kf/201208/149602.html algorithm:A.令C ...
- jQuery插件开发全解析
jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...
- GIT过滤
git 创建 .gitignore 文件 建立项目过滤规则 创建 .gitignore 随意设置想跟踪哪些文件 和不跟踪哪些文件. 1.在项目根目录下建立 .gitignore 文件 2. .gi ...
- PHP 迭代器模式
迭代器:类继承PHP的Iterator接口,批量操作. 1. 迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素.2. 相比传统的编程模式,迭代器模式可以隐藏遍历元素的所需操作.接口 ...