在顺序中一切的数据都是以流的体式格局举行传输或保存的,顺序须要数据的时刻要运用输入流读取数据,而当顺序须要将一些数据保存起来的时刻,就要运用输出流完成。
顺序中的输入输出都是以流的情势保存的,流中保存的现实上全都是字节文件。
字撙节与字符流
在java.io包中操纵文件内容的重要有两大类:字撙节、字符流,两类都分为输入和输出操纵。在字撙节中输出数据主假如运用OutputStream完成,输入使的是InputStream,在字符流中输出主假如运用Writer类完成,输入流重要运用Reader类完成。(这四个都是抽象类)
java中供应了专用于输入输出功用的包Java.io,个中包含:
InputStream,OutputStream,Reader,Writer
InputStream和OutputStream,两个是为字撙节设想的,重要用来处置惩罚字节或二进制对象。
Reader和Writer,两个是为字符流(一个字符占两个字节)设想的,重要用来处置惩罚字符或字符串。
字符流处置惩罚的单元为2个字节的Unicode字符,离别操纵字符、字符数组或字符串,而字撙节处置惩罚单元为1个字节,操纵字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单元的字符而成的,所以它对多国言语支撑性比较好!假如是音频文件、图片、歌曲,就用字撙节好点,假如是关系到中文(文本)的,用字符流好点。
一切文件的贮存是都是字节(byte)的贮存,在磁盘上保存的并非文件的字符而是先把字符编码成字节,再贮存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以构成字节序列。
字撙节可用于任何范例的对象,包含二进制对象,而字符流只能处置惩罚字符或许字符串; 2. 字撙节供应了处置惩罚任何范例的IO操纵的功用,但它不能直接处置惩罚Unicode字符,而字符流就能够。
字撙节是最基本的,一切的InputStrem和OutputStream的子类都是,重要用在处置惩罚二进制数据,它是按字节来处置惩罚的 但现实中许多的数据是文本,又提出了字符流的观点,它是按虚拟机的encode来处置惩罚,也就是要举行字符集的转化 这两个之间经由过程 InputStreamReader,OutputStreamWriter来关联,现实上是经由过程byte[]和String来关联 在现实开辟中涌现的汉字题目现实上都是在字符流和字撙节之间转化不一致而形成的。
Reader类的read()要领返回范例为int :作为整数读取的字符(占两个字节共16位),范围在 0 到 65535 之间 (0x00-0xffff),假如已抵达流的末端,则返回 -1。
inputStream的read()虽然也返回int,但由于此类是面向字撙节的,一个字节占8个位,所以返回 0 到 255 范围内的 int 字节值。假如由于已抵达流末端而没有可用的字节,则返回值 -1。因而关于不能用0-255来示意的值就得用字符流来读取!比如说汉字。
ki4网,大批的免费Java入门教程,迎接在线进修!
以上就是java 流区分是什么的细致内容,更多请关注ki4网别的相干文章!