Java—IO流

161 阅读4分钟

​ 本文已参与「新人创作礼」活动,一起开启掘金创作之路。

IO流有什么作用

IO流可以将是定文件内的数据读取到java系统中,或者将指定的字符写入指定文件中,在政务类系统或是其他报表类系统中,将会大量的应用IO流\

File类

file可以获取到指定路径上的指定文件,并将其赋给对象,之后对该对象进行操作就可以对该文件进行循环,其创建格式为File file = new File("d:1.txt").注意路径需要写在双引号内。且需要进行异常捕获(或抛出),系统认为地址或文件名有可能不正确,需要进行异常处理。

file类下常用方法
* .length()获取文件字节长度:其中一个汉字是字符,算两字节;英文字母每个算一个字节。
* .canRead():判断文件是否可读,可读返回true
* .delete():将文件删除。
* .getAbsoluteFile():返回绝对路径名字的字符串。
* .getname():获取文件名\

IO流的分类

IO留分为:字节流,字符流,缓冲流,对象流

1.字节流:通过字节进行数据读取,每次只能读取一个字节(汉字为两字节)多用于音视频,图片类的文件传输。在定义前需要先创建File对象,定义方式为InputStream/OutputStream 对象名 =  new  FileInputStream(file)/FileOutputStream(file)

常用方法:

 * .read(),读取数据流的下一个数据字节
* .write(),通过数据流输出数据字节
* .close() ,关闭字节流

注意:当使用输出语句时,关闭字节流后才会将数据写入文件中,且会覆盖原内容。InputStream/OutputStream两个类为抽象方法,所以在创建对象的时候需要创建其子类对象。

2.字符流:通过字符进行数据读取,每次以字符为单位进行读取,用于文本类文件的传输。在定义前,同样需要创建File对象,其定义过程与字节流类似。常用方法与字节流类似

特有方法:.readLine():读取下一行字符串。

3.缓冲流:

缓冲流是节点流(字符流和字节流)的一种操作流,他是将节点流进行缓冲,缓冲后统一进行读取。节点流如果说是一根水管的话在将不间断的送水(传输数据)的话,那么缓冲流就相当于一个水桶,将传送过来的水装进一个水桶内,这样我们就可以一次性的将我们需要的水(数据)提走(得到或写入文档),而不是一直在水龙头前等待。换句话说,缓冲流可以节省我们的内存消耗。缓冲流的书写和节点流类似,在对应的节点流前加buffer即可,在使用时,字符输入缓冲流提供了一个特殊的方法,readline(),它可以每次读取文档中的一行数据。

4.对象留

对象流顾名思义,是将对象进行输入和输出,他将对象转换成字节码,所以对象流也只能使用字节流来进行传输。在输出对象时,将对象转换成字节码(序列化);输入时,将字节码转换成对象(反序列化)

注意:如果需要将一个对象通过对象流进行传输,需要在对象所在的类当中实现Serializable接口(该接口内并没有什么实质的内容,声明实现该接口的意义在于声明加入对象串行化协议(串行化概念:我们知道对象在我们创建时生成,当我们结束他们时死亡,串行化会让对象将自己的内容保存下来,当我们需要其重生时,便可根据其保存下来的属性进行重生。感觉有点像我们电脑死机后的一键还原)),并在声明后会声明一个serialVersionUID关键字,并赋一个值,在序列化时,会将该值一同写入流内,在反序列化时,会将对象内的直与类内的值进行比较,若一致则可进行反序列化,若不一致,则会失败,并抛出InvalidCastException