当前位置 博文首页 > 托马斯-酷涛的博客:二十七、JavaSE----File类、IO类

    托马斯-酷涛的博客:二十七、JavaSE----File类、IO类

    作者:[db:作者] 时间:2021-09-08 23:04

    File类:

    ????????File类是对文件系统中文件以及文件夹进行操作的类,可以通过面向对象的思想操作文件和文件夹。

    文件创建操作如下,主要涉及文件创建删除文件获取文件描述符等。

    ?也可以对文件夹进行操作

    上面只是举出来了两个简单的示例,实际上,还有一些其他对文件的操作没有使用。比如创建文件,就可以使用三种方式来创建。

    ?directoryPath是文件的路径名filename是文件名dirObj是一个File对象。例如:

    ?现在对File类进行总结。

    基于IO类和相关方法

    ????????虽然IO类有很多,但是最基本的是四个抽象类,InputStream?、OutputStream 、Reader、Writer

    ????????最基本的方法也就是readwrite方法,其他流都是上面这四类流的子类,方法也是通过这两类方法衍生而成的。而且大部分的IO源码都是native标志的,也就是说源码都是C/C++写的。 这里我们先来认识一下这些流类及其方法。

    InputStream

    ????????InputStream是一个定义了 Java流式字节输入模式的抽象类。该类的所有方法在出错条件下引发一个 lOException异常。它的主要方法定义如下。

    ?Outputstream

    ????????Outputstream是定义了流式字节输出模式的抽象类。该类的所有方法返回一个void值并且在出错情况 下引发一个lOException异常。它的主要方法定义如下。

    ?Reader

    ????????Reader是Java定义的流式字符输入模式的抽象类。类中的方法在出错时引发 IOException异常

    ?Writer

    ????????Writer是定义流式字符输出的抽象类。所有该类的方法都返回一个void值并在出错条件下引发 lOException 异常

    Inputstream及其子类?

    • FileInputStream文件输入流FilelnputStream类创建一个能从文件读取字节的Inputstream类

    • ByteArrayInputStream字节数组输入流把内存中的一个缓冲区作为InputStream使用

    • PipedInputStream管道输入流实现了 pipe管道的概念,主要在线程中使用

    • Sequenceinputstream 顺序输入流把多个 InputStream 合并为一个 InputStream

    • FilterOutputStream过滤输入流其他输入流的包装

    • ObjectInputStream反序列化输入流将之前使用ObjectOutputStream序列化的原始数据恢复为对象,以流的方式读取对象

    • DataInputStream :数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本Java数据类型

    • PushbackInputStream推回输入流缓冲的一个新颖的用法是实现推回(pushback)

    • Pushback用于输入流允许字节被读取然后返回到

    Outputstream及其子类

    • FileOutputStream文件输出流该类实现了一个输出流,其数据写入文件

    • ByteArrayOutputStream字节数组输出流该类实现了一个输出流,其数据被写入由byte数组充当的缓冲区,缓冲区会随着数据的不断写入而自动增长

    • PipedOutputStream管道输出流:管道的输出流,是管道的发送端

    • ObjectOutputStream基本类型输出流该类将实现了序列化的对象序列化后写入指定地方

    • FilterOutputStream过滤输出流:其他输出流的包装

    • PrintStream打印流:通过Printstream可以将文字打印到文件或者网络中去

    • DataOutputStream :数据输出流允许应用程序以与机器无关方式向底层输出流中写入基本Java数据类型

    Reader及其子类

    • FileReader文件字符输入流把文件转换为字符流读入

    • CharArrayReader字符数组输入流是一个把字符数组作为源的输入流的实现

    • BufferedReader缓冲区输入流:BufferedReader类从字符输入流中读取文本并缓冲字符,以便有效地读取字符,数组和行

    • PushbackReader : PushbackReader类允许一个或多个字符被送回输入流

    • PipedReader管道输入流主要用途也是在线程间通讯,不过这个可以用来传输字符

    Writer及其子类

    • FileWriter字符输出流:FileWriter创建一个可以写文件的Writer类
    • CharArrayWriter字符数组输出流:CharArrayWriter实现了以数组作为目标的输出流

    • BufferedWriter 缓冲区输出流:BufferedWriter是一个增加了 flush()方法的Writer。flush()方法 可以用来确保数据缓冲器确实被写到实际的输出流

    • PrintWriter : PrintWriter本质上是PrintStream的字符形式的版本

    • PipedWriter管道输出流主要用途也是在线程间通讯,不过这个可以用来传输字符

    ????????Java的输入输出的流式接口为复杂而繁重的任务提供了一个简洁的抽象。过滤流类的组合允许动态建立客户端流式接口来配合数据传输要求。继承高级流类InputStream、InputStreamReader、Reader 和Writer类的Java程序在将来(即使创建了新的和改进的具体类)也能得到合理运用。

    cs