java IO总结

一、按字节流读取

抽象类inputStream和outputStream两个以及他们的子类

 Fileinputstream Fileoutputstream   int  read() 以及write(int)、write(byte[])  拷贝会用到

ByteArrayInputStream  ByteArrayOutputStream 

BufferedInputStream BufferedOutputStream

都类似

二、按字符流读取

1、Reader和Writer是字符流操作的主要类,他们俩是抽象类,其子类是InputStreamReader和InputStreamWriter,再下一级的子类是FileReader和FileWriter。除了抽象类不能实例化,其他的都是可以的。



上面这些都是主要的用于字符流操作的类。

1、其中主要用的是InputstreamReader和fileReader 主要方法有

int read()   到达末尾返回-1  非末位返回ASCII码

int read(char[]  zifu) 将字符读入字符数组  到达末尾返回-1

int read(char[] zifu ,int off,int length) 将某个字符开始的位置读取n个字符到字符数组中。

write(int n)  以ASCII码方式读入 对应流的方式输入

write(char[]) 以字符流的方式读入

write(string) 以字符串读入 比如与bufferedreader对应。

2、还有bufferedreader用的也较多。主要是可以一行行读取 读出来的也直接是string 

string  readline()   到达末尾就是null

3、注意点,按字符输出,在win里是会把每个字符都输出的,比如换行、回车、空格的,一般在win里换行其实是回车(\r   ASCII码是13)+换行(就是说在下一行起始位置 \n  ASC码是10)两者共同组成,而在linux里其实就是/n 就行。所以要输出所有字符,可以用if(char(read.read())!= “\r” 且不等于“\n”就行啦!

4、注意点2,IO里比较多的异常用到try-catch-finally 注意 多种异常可以集中采用IOException就行 否则太多了。重要!! 声明reader/writer等对象,最好在try外部!!!因为有作用域的问题,否则在finally报错!一定在外部声明。

5、实践证明 Filewriter 不能使用UTF-8编码方式也不能指定,所以写入最好有fileoutputstream来写 或者用 outputstreamwriter(可以通过fileoutputstream来设定charset)来写 比较好用。

三、File类的接口

创建功能:createNewFile(),mkdir(),mkdirs()

删除功能:delete()

重命名功能:renameTo()

判断功能:isFile(),isDirectory(),exists()等

获取功能:getName(),getPath(),list()等

文件过滤器的作用:list(FilenameFilter filter),返回满足指定条件的文件列表

四、转换流的作用

inputStreamReader   outputstreamWriter字节流到字符流转化

FileReader xxx = new FileReader(new inputStreamReader( new fileinputstram(file))

bufferedWriter = new BufferedWriter(new outputstreamWriter(new fileoutputstream(file), charset)

五、缓冲

A:缓冲思想

* 字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,

* 这是加入了数组这样的缓冲区效果,java本身在设计的时候,

* 也考虑到了这样的设计思想,所以提供了字节缓冲区流

* B.BufferedInputStream

* BufferedInputStream内置了一个缓冲区(数组)

* 从BufferedInputStream中读取一个字节时

* BufferedInputStream会一次性从文件中读取8192个, 存在缓冲区中, 返回给程序一个

* 程序再次读取时, 就不用找文件了, 直接从缓冲区中获取

* 直到缓冲区中所有的都被使用过, 才重新从文件中读取8192个

* C.BufferedOutputStream

* BufferedOutputStream也内置了一个缓冲区(数组)

* 程序向流中写出字节时, 不会直接写到文件, 先写到缓冲区中

* 直到缓冲区写满, BufferedOutputStream才会把缓冲区中的数据一次性写到文件里


面试题小数组的读写和带Buffered的读取哪个更快?

* 定义小数组如果是8192个字节大小和Buffered比较的话

* 定义小数组会略胜一筹,因为读和写操作的是同一个数组

* 而Buffered操作的是两个数组

http://www.cnblogs.com/biehongli/p/6074713.html

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

推荐阅读更多精彩内容