13.IO

在这里插入图片描述

I/O流

概念:在变量,数组,和对象存储的数据都是暂时的,程序结束时就会丢失。要永久保存到磁盘文件中,可以使用I/O技术将数据保存到文本文件、二进制文件甚至是压缩文件中,以达到永久保存数据的要求

一、File类

概念:File类保存了对文件的操作,实现创建、删除、重命名文件等操作。也可以用来获取文件信息,如:文件所在目录,文件长度、文件读写权限等,数据流可以将数据写入到文件中。

构造方法:

构造方法参数说明
File(String pathname);pathname:文件全路径包含文件名。
File(String parent,String child);parent:路径。 child:文件名
File(File f,String child);f:文件对象只包含了路径没有文件名。child:文件名

获取文件信息:

方法名返回值描述
getName()String获取文件名称
length()long获取文件长度(字节为单位)
getAbsolutePath()String获取文件绝对路径
getParent()String获取文件父路径(不含文件名)
lastModified()long最后一次修改时间
exit()boolean文件是否存在
isFile()boolean是不是文件
isDirectory()boolean是不是目录(文件夹)
isHidden()boolean是否为隐藏文件
canRead()boolean权限是否为可读
canWrite()boolean权限是否为可写
transferToFile1.transferTo(File2)将File1的内容写入File2中

二、输入流 InputStream

概念:从文件、网络、压缩包等一切数据源 读取数据 到程序中,InputStream类是字节输入流的抽象类,所有字节输入流的父类。

常用方法:

方法概述
**read(); **从输入流读取数据的下一个字节。返回0~255范围内的int字节值。如果读取完到末尾则返回-1。
**read(byte[] b); **从输入流读取一定的长度的字节,并以整数的形式返回字节数。
**close(); **关闭输入流并释放与该流相关的所有系统资源。
skip(long n);跳过输入流上的n个字节并返回实际跳过的字节数。
reset();将输入指针返回到当前所做的标记处。
mark(int readlimit);在输入流的当前位置放一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。
markSupported();判断 如果当前流支持mark()/reset()操作则返回true

注意:不是所有的InputSteam子类都支持InputStream的方法例如skip()、mark()、reset()。

InputStream 用来处理字节,不适合处理字符,处理字符使用Reader类

三、输出流OutputStream

概念:把数据写入到目的地。

OutputStream类是字节输出流的抽象类,所有字节输出流的超类。

所有方法的返回值为void;

常用方法:

方法概述
write(int b);将指定的字节写入输出流中。
write(byte[] b);从指定的byte[]数组将字节写入此输出流。
write[byte[] b,int off,int len];将指定的byte数组从偏移量off开始len个字节写入此输出流。
flush();强制清空缓存区,把数据写入目的地。
close();关闭输出流并释放与该流相关的所有系统资源。

四、文件I/O流FileInputStream / FileOutputStream

FileInputStream和FileOutputStream都是用来操作磁盘文件,字节读写

1、文件输入流 FileInputStream

常用构造方法:

构造方法
FileInputStream(String name)name:文件所在全路径
FileInputStream(File file)file:文件所在对象

2、文件输出流 FileOutputStream

常用构造方法:

构造方法
FileOutputStream(String name)name:输出目的地 的文件全路径
FileOutputStream(File file)file:输出目的地 的文件对象

五、缓冲文件I/O流 BufferedInputStream / BufferedutputStream

六、字符I/O流 FileReader / FileWriter

由于FileInputStream / FileOutputStream 都是字节读取,因为每个中文占用两个字节,对于的中文读取可能会出现乱码的情况,采用Reader/Writer类可以避免这种乱码的出现

七、缓冲字符I/O流BufferedReader/ BufferedWeriter

posted @ 2022-09-12 18:11  晓洋^  阅读(45)  评论(0)    收藏  举报