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

简介: 二十七、JavaSE----File类、IO类

File类:


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


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


12.png


也可以对文件夹进行操作


13.png


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


14.png


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


15.png


现在对File类进行总结。


16.png


基于IO类和相关方法


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


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


InputStream

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


17.png


Outputstream

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


18.png


Reader 类

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


19.png


Writer 类

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


20.png


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

相关文章
|
4月前
|
Java
缓冲流和转换流的使用【 File类+IO流知识回顾③】
这篇文章介绍了Java中缓冲流(BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter)和转换流(InputStreamReader, OutputStreamWriter)的使用,包括它们的构造方法和如何利用它们提高IO操作的效率及处理字符编码问题。
缓冲流和转换流的使用【 File类+IO流知识回顾③】
|
4月前
|
存储 Java 调度
FileInputStream,FileOutputStream 和 FileReader ,FileWriter 类的基本使用【 File类+IO流知识回顾②】
这篇文章回顾了Java中FileInputStream、FileOutputStream、FileReader和FileWriter类的基本使用方法,包括读取和写入文件的操作,以及字符流和字节流的区别和应用场景。
FileInputStream,FileOutputStream 和 FileReader ,FileWriter 类的基本使用【 File类+IO流知识回顾②】
|
4月前
|
Java
File类的基本使用【 File类+IO流知识回顾①】
这篇文章回顾了Java中File类的基本使用,包括创建File对象、获取文件数据信息、判断文件存在与否、创建和删除文件目录,以及遍历文件目录的方法。
File类的基本使用【 File类+IO流知识回顾①】
|
4月前
|
存储 Java
序列化流 ObjectInputStream 和 ObjectOutputStream 的基本使用【 File类+IO流知识回顾④】
这篇文章介绍了Java中ObjectInputStream和ObjectOutputStream类的基本使用,这两个类用于实现对象的序列化和反序列化。文章解释了序列化的概念、如何通过实现Serializable接口来实现序列化,以及如何使用transient关键字标记不需要序列化的属性。接着,通过示例代码演示了如何使用ObjectOutputStream进行对象的序列化和ObjectInputStream进行反序列化。
序列化流 ObjectInputStream 和 ObjectOutputStream 的基本使用【 File类+IO流知识回顾④】
|
5月前
|
Java
IO流操作-------File类、输入流和输出流(二)
这篇文章介绍了Java中IO流操作的基本概念和使用,包括字节流和字符流的读取与写入,以及如何使用缓冲流提高文件读写效率和实现文件复制的方法。
IO流操作-------File类、输入流和输出流(二)
|
5月前
|
Java
IO流操作-------File类(一)
这篇文章介绍了Java中File类的常用操作,包括创建文件/文件夹、删除文件、查询文件属性(如存在性、大小、名称、路径)以及递归遍历文件夹下所有文件的方法。
IO流操作-------File类(一)
|
5月前
|
存储 缓存 Java
15 Java IO流(File类+IO流+字节流+字符流+字节编码)
15 Java IO流(File类+IO流+字节流+字符流+字节编码)
60 3
|
7月前
|
存储 Go C#
【.NET Core】深入理解IO之File类
【.NET Core】深入理解IO之File类
111 6
|
7月前
|
存储 自然语言处理 Java
Java-File类与IO流(2)
Java-File类与IO流(2)
48 0
|
7月前
|
存储 Java 测试技术
Java-File类与IO流(1)
Java-File类与IO流(1)
47 0