杂乱笔记

节点流:

概念:

1.理解流的概念

2.InputStreamOutputStream

3.FileInputStreamFileOutputStream

4.ReaderWriter

5.PipedInputStreamPipedOutputStream

6.ByteArrayInputStreamByteArrayOutputStream

7.重视程序代码的复用性

字段"1."理解流的概念:

① 流 是 字节序列的 抽象概念;

② 文件 是 数据的 静态 储存形式,而 流 是指 数据 传输时的 形态;(文件是流可操作的IO之一)

③ 流类 分为 两个 大类:节点流类 和 过滤流类(处理流类);

字段“2.”:

InputStream类:

① 程序 可以 从中 连续读取字节的 对象 叫 输入流,在Java中,用InputStream类来 描述 所有输入流的 抽象概念。

② 此类的方法:int read():二进制形式为11111111的数据,以byte类型表示为-1,以int类型表示为255int read(byte[] b):最多读取字节数组的长度。int read(byte[] b,int off, int len):读取len个数据。long skip(long n):跳过n个字节,返回 跳过的 字节数。int available():返回输入流中可读的字节数。void mark(int readlimit):从标记处开始,最多再读取readlimit个字节。void reset():与mark配合使用,回到mark所指位置。boolean markSupported():返回流是否支持markresetvoid close():释放不用的流使用的系统资源。(注:markreset只适用于包装流)

OutputStream类:

① 程序可以向其中连续写入字节的对象叫输出流,在Java中,用OutputStream类来描述所有输出流的抽象概念。

② 此类的方法:void write(int b):最低字节被写入流。void write(byte[] b)void write(byte[] b,int off, int len)void flush()void close()

零星:通过缓冲区控制来排错。

FileInputStreamFileOutputStream类:

FIS:文件必须已存在可读。如果文件存在,文件原来的内容将被覆盖清除。

FOS:能指定不存在的文件名,不能指定已被其他程序打开的文件。

ReaderWriter类:

二进制文件与文本文件的区别:专门用于存储字符的文件为文本文件,其他的都是二进制文件。ReaderWriter是对文本文件进行输入输出的。

FileOutputStream在内部调用了flushFileWriter类则没有调用,缓冲区的内容就没用进入文件。好像是因为FileOutputStream类可以处理字符串,而FileWriter只处理字符,导致FileWriter只知道一个字一个字的读,不知道读完一个字符串就停,或者说它根本就不知道字符串这种东西的存在。

PipedInputStreamPipedOutputStream类:

用于在应用程序中创建管道通信。线程通信。

PipedWriter PipedReader类:

管道流类。实现各个程序模块之间的松耦合通信。

ByteArrayInputStreamByteArrayOutputStream类:

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

构造函数略。

StringReaderStringWriter类:

以字符IO流的方式处理字符串。对映ByteArray那两口子。

重视IO程序代码的复用:

System.in连接到键盘,是InputStream类型对象;System.out连接到显示器,是PrintStream类型对象。

InputStreamread方法始终返回-1来表示输入流结束。

Ctrl+z 你懂得,Ctrl+Dlinux下的。

建议:1、如要从键盘读取大量数据时,尽量将读取数据的 过程 放在函数内,用-1来表示键盘输入结束了。

2、函数中的代码不应直接使用System.in类读取数据,而是使用一个InputStream类型的形参来读取数据,将System.in作为实参传递给InputStream类型的形参,来调用函数。

字符编码:

计算机里只有数字,计算机软件里的一切都是用数字来表示的,屏幕上显示的字符也不例外。

字符与数字对应的编码规则称为ASCII(美国标准信息交换码)。最高bit位为0,数字在0~127之间。

中国大陆将每个中文字符都用两个字节 数字 表示,中文每个字节最高位bit都为1,中国大陆为每个中文字符制定的编码规则称为GB2312(国标码)。后来加入更多的中文字符和繁体,编码规则称为GBK。中国大陆使用的计算机系统上,这俩国标被称为本地字符集。

中国台湾的编码规则称为BIG5

Unicode编码:

ISO对全世界所有符号进行统一编码。

例:“中”,在全世界任何角落始终对应4e2d

对于原ASCII,增加一个bit全为0的字节。

Unicode表示的字符个数有65536个,还有两千多个没用。

JavaNB的支持了本地和U集。

UTF-8编码:

UTF-8,对ASCII保持原样,占一个字符,对其他国家,占2~3个字节。用EF BB BF在文件开头,标记UTF8编码。

UTF8优点:

1.Unicode会有0x00……之类的,与C语言之类的会产生冲突。UTF8没有

2.便于应用程序检测数据在传输过程中是否发生了错误

3.直接处理使用ASCII码得英文文档

UTF8缺点:

1.某些字符需要3个字节。

UTF-16编码:

Unicode的扩充……不行了,纯理论的笔记让我吐血……

字符编码的操作体验:

查看中文字符的GB2312UTF8Unicode……等各种操作。

字符编码应用的一个奇怪现象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值