二十七、JavaSE----File类、IO类

81 阅读4分钟

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程序在将来(即使创建了新的和改进的具体类)也能得到合理运用。