JAVA API-day07

A

基本的IO操作

什么是输入:
  --输入是一个从外界进入到程序的方向,通常我们需要读取外界数据时,使用输入,输入是用来读取数据的。
什么是输出:
  -- 输出是一个从程序发送到外界的方向,通常我们需要写出数据到外界时,使用输出,输出是用来写出数据的
InputStream:是所有字节输入流的父类,它定义了基础的读取方法,常用的方法如下:
    --int read():读取一个字节,以int形式返回,该int值“低8位”有效,若返回值为-1则表示EOF。
      ---重载方法:int read(byte[] d):尝试最多读取给定数组的length个自己并存入该数组,返回值为世纪读取的字节量
OutputStream是所有字节输出流的父类,其定义了一些基础写出方法,常用的如下:
  --void write(int d):写出一个字节,写的是给定的int的低8位。
  --void write(byte[] d):将给定的字节数组中的所有字节全部写出。

文件流

FileOutputStream:是文件的字节输出流,我们使用该流可以将字节为单位写入到文件。
  构造方法:
    --FileOutputStream(File file):创建一个指向File对象表示的文件A数据的文件输出流。
    --FileOutputStream(String filename):创建一个有指定名称的文件中写出数据的文件输出流。
    注:若指定的文件已经包含内容,那么当使用FileOutputStream对其写入数据时,会将该文件中原有数据全部清除。
--FileOutputStream(File file,boolean append):
--FileOutputream(String filename,boolean append)
两种都属于[FileOutputStream-追加模式]
  注:以上两个构造方法中,第二个参数若为true,那么通过FileOutputStream写出的数据都是在文件末尾追加的。
FileInputStream:是文件的字节输入流,我们可以使用该流以字节为单位从文件中读取数据。
构造方法:
  --FileInputStream(File file);    
  --FileInputStream(String filename),
常用方法:
read()/read(byte[] d)/read(byte[],int offset,int len).....

缓冲流

BufferedInputStream:输入缓冲流
BufferedOutputStream:输出缓冲流
  --BufferedOutputStream缓冲输入流内部维护着一个缓冲区,每当我们向该写数据时,都会先将数据存入到缓冲区,当缓冲区满的时候,缓冲流会将数据一次性全部写出
  --BufferedInputStream是缓冲输入流,内部也维护着一个缓冲区(字节数组),使用该流在读取一个字节时,该流会尽可能多的一次性读取若干字节并存入缓冲区,然后逐一的将字节返回,直到缓冲区的数据被全部读取完毕,这样就减少了读取的次数,从而提高了读取的效率。
构造方法:
  --BufferedOutputStream(OutputStream out);
  --BufferedInputStream(InputStream out);
常用方法:read()/write()等
请出缓存区中的数据,可以用flush()方法。
close()方法中包含flush()方法

节点流和处理流

  --按照流是否与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类
      节点流(低级流):可以从或者向一个特定的地方(节点)读写数据。
       (高级流):是对一个已经存在的流的链接和封装,通过所封装的流的功能调用实现数据读写。
      --处理流的构造方法总要带一个其他流对象为参数。
      --一个流经过其他流的多次包装,称为流的链接。

对象流

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

推荐阅读更多精彩内容