编码:字符串变成字节数组。

解码:字节数组变成字符串

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流 总结三的更多相关文章

  1. Java中的IO流(三)

    上一篇<Java中的IO流(二)>把学习Java的字符流以及转换流作了一下记录,从本篇开始将把IO流中对文件或文件夹操作的对象File类的学习进行一下记录. 一,File类的构造函数及字段 ...

  2. java基础(二十)IO流(三)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  3. IO流(三)

    五.Java序列化 概述 Java序列化是指把Java对象转换为字节序列的过程 Java反序列化是指把字节序列恢复为Java对象的过程 当两个Java进程进行通信时,发送方需要把这个Java对象转换为 ...

  4. J03-Java IO流总结三 《 FileInputStream和FileOutputStream 》

    1. FileInputStream    FileInputStream是一个文件输入节点流,它是一个字节流,它的作用是将磁盘文件的内容读取到内存中. FileInputStream的父类是Inpu ...

  5. File类与常用IO流第三章IO流概述

    一:以内存为基准,按照数据的流动方向,流向内存为输入(读取数据),流出内存为输出.IO流有四大顶级父类: IO流四大顶级父类   输入流 输出流 字节流 字节输入流 InputStream 字节输出流 ...

  6. IO流(三)其他流与File类

    1:其他的流 1: DataOutputStream ;多了一些操作基本数据类型的功能 DataInputStream:读取文件. 用DataOutputStream流写进去的数据,就用DataInp ...

  7. 05 IO流(三)——IO流标准流程

    流程 选择源 选择合适的流 操作 关闭流:先打开的后关闭 演示 import java.io.File; import java.io.InputStream; import java.io.File ...

  8. Java基础IO流(三)字符流

    字符流: 文本和文本文件: java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)文件是byte byte byte....的数据序列,而文本文件是文本(char)序列 ...

  9. java IO流 (三) 节点流(或文件流)

    1.FileReader/FileWriter的使用:1.1 FileReader的使用 /* 将day09下的hello.txt文件内容读入程序中,并输出到控制台 说明点: 1. read()的理解 ...

随机推荐

  1. Datatypes In SQLite Version 3

    http://www.sqlite.org/datatype3.html http://stackoverflow.com/questions/7337882/what-is-the-differen ...

  2. [Effective Java]第十一章 序列化

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. POJ 2376 Cleaning Shifts(轮班打扫)

    POJ 2376 Cleaning Shifts(轮班打扫) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] Farmer ...

  4. tiled工具使用

    转的 在这个分为上下两部分的教程中,我们将介绍如何使用Cocos2D-X和地图编辑器做一款基于地图块的游戏.在这个简单的地图块游戏里,一个精灵将在沙漠里搜寻它可口的西瓜! 在教程的第一部分,我们将介绍 ...

  5. SQL Povit

    ),) ,,@logistics_code='All',@fee_type='All' ),) ,@strDateList='',@from_date=cast((ltrim(@yr)+'-'+ltr ...

  6. Javascript屏蔽回车提交表单

    html利用input防止回车提交 默认情况下,单个输入框,无论按钮的type="submit"还是type="button"类型,回车即提交. 1.当type ...

  7. Spring JDBC主从数据库配置

    通过昨天学习的自定义配置注释的知识,探索了解一下web主从数据库的配置: 背景:主从数据库:主要是数据上的读写分离: 数据库的读写分离的好处? 1. 将读操作和写操作分离到不同的数据库上,避免主服务器 ...

  8. thinkphp模板调用函数用法

    注意:自定义函数要放在项目应用目录/common/common.php中. 这里是关键. 模板变量的函数调用格式为: {$varname|function1|function2=arg1,arg2,# ...

  9. iOS开发之 Xcode6 添加xib文件,去掉storyboard的hello world应用

    iOS开发之  Xcode6.1创建仅xib文件,无storyboard的hello world应用 由于Xcode6之后,默认创建storyboard而非xib文件,而作为初学,了解xib的加载原理 ...

  10. 【Oracle 数据迁移】环境oracle 11gR2,exp无法导出空表的表结构【转载】

    今天做数据迁移,但是发现有些空表无法exp,后来找到问题所在. [原文]:http://www.cnblogs.com/wenlong/p/3684230.html 11GR2中有个新特性,当表无数据 ...