IO流简记+ 字符编码

按功能方向性分,可分为输入,输出流,又可分为节点流,处理流;又可分为8bit字节流,16bit字符流。
如果是Reader结尾的都是字符流,以Stream结尾的都是字节流。
对于输出的缓冲流,写出的市局会先在内存中缓存,使用flush方法将会使内存中的数据立刻写出。
转换流:InputStreamReader和OutputStreamWriter用与字节数据到字符数据之间的转换。
FileOutputStream("文件",true)表示在文件内容后追加。
getEncoding()得到字符编码  ----ISO8859-1 是latin-1 西欧语言
Print流, PrintWriter 和PrintStream都是属于输出流,分别针对字符和字节。
println方法用于多种数据类型的输出。
System.setOut(PrintStream)。重新设置out的值。

直接将Object写入或读出
 transient关键字 表示透明的.不考虑
 serializable接口 ,标记性接口 序列化
externalizable这个接口继承于serializable ,外部的,自己控制序列化过程

System.in连接到键盘,是InputStream类型的实例对象。

system.out连接显示器,是PrintStream类的实例对象。

InputStream的read方法总是返回-1来表示输入流的结束。


DataInputStream和DataOutputStream,过滤流,需要使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。 
PipedInputStream和PipedOutputStream,管道流,用于线程间的通信。一个线程的PipedInputStream对象从另一个线程的PipedOutputStream对象读取输入。要使管道流有用,必须同时构造管道输入流和管道输出流。

 

/r 13,
/n 是10;在ascii
int ch= in.read();
if(ch=='/r')
    continue;
if(ch=='/n'){
   
}
操作IO明确规律:
1.明确源和目的
源:输入流 InputStream Reader
目的: 输出流 OutputStream Writer
2.操作的数据是否是纯文本
是:字符流
否:字节流
3.当体系明确后,再确定具体对象
源设备:内存,硬盘。键盘
目的设备:内存,硬盘,控制台.

 

 

程序---DataOutputStream--->BufferedOutputStream->FileOutputStream --->文件  (写入)

程序-<----DataInputStream-<----BufferedInputStream<----FileInputStream<-----文件 (读取)

 

 

 

字节流转换字符流

InputStream-->InputstreamReader ---> BufferedReader--->File Reader
将一个字节流中的字节码字符后读取
OutputStream-->OutputStreamWriter--->BufferedWriter--->File  Writer
 讲字符编码成字节后写入到一个字节流中

 

 

 字符编码
字符a对应数字97, b对应98等.  这种字符与数字对应的编码规则称为ASCII 。它的最高bit位都为0。也就是这些数字在(0-127之间)。
中文字符的每个字符2个字节,最高位为1。
ISO(国际标准化组织)将世界所有文字统一编码,称值为Unicode编码。中国的"中"发到任何一个国家本地化系统中仍然是"中"。Unicode编码的字符占2个字节,范围2的16次方(65553)。
UTF-8  /u0001和/u007f之间的字符,utf-8编码为(byte)c ,原来的字符。
UTF-16 编码在Unicode编码上增加了对Unicode编码没有的那些字符的表示方式。

\u开头的是一个Unicode码的字符,每一个'\u0000'都代表了一个空格
通常中文在的显示都是被转化为Unicode显示的. 

Unicode可同时包含65536个字符,ASCII/ANSI只包含255个字符,实际上是Unicode的一个子集。Unicode字符通常用十六进制编码方案表示,范围在'\u0000'到'\uFFFF'之间。\u0000到\u00FF表示ASCII/ANSI字符。\u表示这是一个Unicode值.

更正,\u0000代表的应该是NULL,输出控制台是一个空格...

Unicode中的前128个编码与ASCII码是相同的。

 

 

 

字节流转换

 

 


PrintWrite的println方法根据系统不同,输出文本标识符,windows下“/r/n”,Linux下是"/n"



==========================

 

管道通信,实现各个模块之间的松耦合通信 。

Sender.java  Receiver.java   main

 

---------------------------------------------------------------------

 

---------------------------------------------------------------------------

 

====================================================================

 

 

ByteArrayInputStream  ,ByteArrayOutputStream

用于以IO流的方式完成对数组内容的读写,来支持类似内存虚拟文件或者内存映像文件的功能。

 

 

 

===============================

RandomAccessFile........... 任意访问文件流

 

 


 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值