IO流相关

Java.IO 包中定义了多个流类型 (类和抽象类) 来实现输入\输出功能,
按数据流的方向不同可以分为输入和输出流
按处理数据单位不同可以分为字节流和字符流
按照功能的不同可以分为节点流和处理流

字节流 :完完全全按照二进制编码格式一个字节一个字节来读的。
输入流    InputStream         输出流 OutputStream

字符流是按照一个字符一个字符来读的,一个字符等于两个字节。    会将读取的字节数据根据当前使用的字符进行编译
字符流 = 字节流+解码。
输入流    Reader      输出流   Writer              

只考虑文件操作情况下:
读取操作是:input \ read 从硬盘(存储设备) 到 内存
写入操作是:output \ write 从内存 到 硬盘(存储设备)

节点流
节点流就相当于一根管道直接插到数据源上面,直接读数据源里面的数据,或者直接往数据源里面写入数据。
典型的节点流是文件流:文件的字节输入流(FileInputStream) 文件的字节输出流(FileOutputstream)
文件的字符输入流(FileReader),文件的字符输出流(FileWriter)

处理流
处理流是”连接“在已存在的流(节点流或者处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。

InputStream 输入流
继承自InputStream的都是用于向程序中输入数据,且数据的单位为字节(8 bit);
具体方法
//读取一个字节并以整数的形式返回
//如果返回-1 已到输入流的末尾
int read() throws IOException

    //读取一系列字节并存储到一个数组buffer
    //返回存储了读取的字节的byte数组, 如果返回-1 已到输入流的末尾
    int read (byte[] buffer)     throws IOException
    
    close 关闭流,释放资源
read方法是一个字节一个字节的读。
read(byte[] buffer)方法是读取是先把数据读取到byte数组buffer里面,然后处理里面的数据。

OutputStream 输出流
继承自OutputStream的都是用于向程序中输出数据,且数据的单位为字节(8 bit);
具体方法
//向输出流中写入一个字节,该字节数据为参数b的低八位
write(int b) throws IOException
//将一个字节类型的数组中的数据写入流
write(byte[]b) throws IOException
//将一个字节型的数组中的从指定位置开始的len个字节写入到输出流
write(byte[]b,int off,int len) throws IOException
//关闭释放内存资源
close(); throws IOException
//将输出流中缓冲的数据全部写出到目标文件
flush() throws IOException

Reader 流
和InputStream 一模一样,唯一的区别在于读取的数据单位不同。继承自Reader的流都是向程序中
输入数据,数据单位都是16bit
一个字符就是两个字节 这种一个字符一个字符读取的方式有它存在的必要性 比如中文在Unicode码中中文占两个
字节 ,如果使用字节流来读一次只能读半个字。使用字符流就可以避免这个问题。

//读取一个字符并以整数形式返回  如果返回-1 已到输入流的末尾
read()        返回int类型  抛IO异常

//读取一些字符并且储存到一个buffer数组中  
//返回实际读取的字符数 如果返回-1 已到输入流的末尾
read(char[] rea)  返回int类型  抛IO异常

//关闭流释放资源
close()   无返回值 抛IO异常

//跳过n个字符不读  返回实际跳过的字节数
skip(long n)   返回long类型  抛IO异常

Writer 流
//向输出流中写入一个数据
write(int c); 无返回值 抛IO异常

//将一个字符型的数组写入输出流
write(char[] c);    无返回值 抛IO异常

//将一个字符数组从指定位置开始(offset)的指定长度(length)个字符写入输出流
write(char[] ,intoffset, int length);    无返回值 抛IO异常

//将一个字符串中的字符写入到输出流
write(String string); 无返回值 抛IO异常

//将一个字符串从offset开始的length个字符写入到输出流
write(String string,int offset, int length)    无返回值 抛IO异常

//关闭流释放资源
close();

处理流
1、缓冲流,缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加一些方法。
缓冲流是指带有缓冲区的,缓冲区(Buffer)就是内存里面的一小块区域,读写时都把数据放到这块缓冲区域里面,减少io对于硬盘的访问次数。
先把数据放置到缓冲区上,等到缓冲区满了以后,再 一次把缓冲区里面的数据写入硬盘或者读取出来。

剩余内容整理中。。。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容