JavaIO基础图关系
![](https://img2018.cnblogs.com/blog/1582294/201911/1582294-20191103123504060-1961016514.png)
File类
· 在整个io包中,唯一表示与文件本身有关的类就是File类。
· 使用File类可以进行创建或删除文件等常用操作。
· 要想使用File类,则首先要观察File类的构造方法,此类的常用构造方法如下所示:
public File(String pathname)
→实例化File类的时候,必须设置好路径。
File类中的主要方法和常量
方法或常量 |
类型 |
描述 |
public static final String pathSeparator |
常量 |
表示路径的分隔符(windows是:“;” ) |
public static final String separator |
常量 |
表示路径的分隔符( windows是:“\” ) |
public File(String pathname) |
构造 |
创建File类对象, 传入完整路径 |
public boolean createNewFile() throws IOException |
普通 |
创建新文件 |
public boolean delete() |
普通 |
删除文件 |
public boolean exists() |
普通 |
判断文件是否存在 |
public boolean isDirectory() |
普通 |
判断给定的路径是否是一个目录 |
public long lenglh() |
普通 |
返回文件的大小 |
public String[] list() |
普通 |
列出指定目录的全部内容,只是列出了名称 |
public Filc[] listFilcs() |
普通 |
列出指定目录的全部内容,会列出路径 |
public boolean mkdir() |
普通 |
创建一个目录 |
public boolean renameTo(File dest) |
普通 |
为已有的文件重新命名 |
流
· 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。
字节流与字符流
· 在java.io包中操作文件内容的主要有两大类:
· 字节流
· 字符流
· 两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使用的是InputStream, 在字符流中输出主要是使用Writer类完成, 输入主要是使用Reader类完成。
字节流
· 字节流主要是操作byte类型数据,以byte数组为准,主要操作类就是OutputStream、InputStream。
· 字节输出流: OutputStream
· 字节输入流: InputStream
追加新内容
· 之前的所有操作中,如果重新执行程序, 则肯定会覆盖文件中的已有内容, 那么此时可以通过
FielOutputStream向文件中追加内容,FileOutputStream的另外一个构造方法:
· public FileOutputStream(File file,boolean append) throwsFileNotFoundException
· 在构造方法中,如果将append的值设置为true,则表示在文件的末尾追加内容。
· 既然程序可以向文件中写入内容,则就可以通过InputStream从文件中把内容读取进来,首先来看InputStream类的定义:
· public abstract class InputStream extends Objectimplements Closeable
· 与OutputStream类一 样, InputStream本 身也是-一个抽象类,必须依靠其子类, 如果现在是从文件中读取,子类肯定是FileInputStream。观察FileInputStream类的构造方法:
· public FilelnputStream(File file) throws FileNotFoundException
字符流
· 在程序中一个字符等于2个字节,那么JAVA提供了Reader、Writer两 个专门操作字符流的类。
· 字符输出流: Writer
· 字符输入流: Reader
使用FileWriter追加文件的内容
· 在使用字符流操作的时候,也可以实现文件的追加功能, 直接使用FileWriter类中的以下构造即可实现追加:
· public FileWriter(File file,boolean append) throwsIOException
· 将append的值设置成true,就表示追加。
字符输入流: Reader
· Reader是使用字符的方式从文件之中取出数据,Reader类的定义如下:
· public abstract class Reader extends Object implementsReadable, Closeable
· Reader本身也是抽象类,如果现在要从文件中读取内容,则可以直接使用FileReader子类。. FileReader的构造方法定义如下:
· public FileReader( File file) throwsFileNotFoundException
字节流与字符流的区别
· 字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的。
· 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类。
· OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即:将一个字符流的输出对象变为字节流输出对象。
· InputStreamReader: 是Reader的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变为字符流的输入对象。
管道流
· 管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream) 、管道输入流(PipedInputStream),如果要想进行管道输出,则必须把输出流连在输入流之上,在PipedOutputStream类上有如下的一个方法用于连接管道:
· public void connect(PipedInputStream snk) throws IOException
打印流
· 在整个IO包中,打印流是输出信息最方便的类,主要包含:
· 字节打印流(PrintStream)
· 字符打印流(PrintWriter)
· 打印流提供了非常方便的打印功能,可以打印任何的数据类型,例如:小数、整数、字符串等等。
System类的常量
· System表示系统类,实际上在java中System类也对IO给予了一定的支持。
System类的常量 |
描述 |
public static final PrintStream out |
对应系统标准输出,一 般是显示器 |
public static final PrintStream.err |
错误信息输出 |
public static final InputStream in |
对应着标准输入,一般是键盘 |