File---》要是对文件和目录的抽象表示;对于File而言,封装的并不是真正的文件,封装的仅仅是一个路径名,磁盘文件本身可以存在,也可以不存在;文件的内容不能用File读取,而是通过流来读取,File对象可以作为流的来源地和目的地。
File类的常用构造方法
构造方法 | 方法说明 |
---|---|
File(String pathname) | 将路径字符串抽象为File实例,路径字符串可以是相对路径,也可以为绝对路径 |
File(String parent, String child) | 从父路径名和子路径名来构建File实例 |
File(File parent, String child) | 根据父File实例和子路径名来构建File实例 |
路径分隔符和换行符
路径分隔符
- windows的路径分隔符: \
- linux的路径分隔符: /
换行符
- windows的换行符: \r\n
- linux的换行符 \n
File的常用方法
方法名 | 方法说明 |
---|---|
boolean createNewFile() throws IOException | 当该名称的文件不存在时,创建一个由该抽象路径名的空文件并返回true,当文件存在时,返回false |
boolean mkdir() | 创建由此抽象路径名命名的目录 |
boolean mkdirs() | 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。级联创建目录 |
boolean delete() | 删除由此抽象路径名表示的文件或目录 |
文件检测
方法名 | 方法说明 |
---|---|
boolean isDirectory() | 判断是否是目录 |
boolean isFile() | 判断是否是文件 |
boolean exists() | 判断文件或目录是否存在 |
boolean canWrite() | 文件是否可写 |
boolean canRead() | 文件是否可读 |
boolean canExecute() | 文件是否可执行 |
long lastModified() | 返回文件的上次修改时间 |
文件获取
方法名 | 方法说明 |
---|---|
String getAbsolutePath() | 返回File对象的绝对路径字符串 |
String getPath() | 将此抽象路径名转换为路径名字符串 |
String getName() | 返回文件或目录的名称 |
long length() | 返回由此File表示的文件的字节数 |
String[] list() | 返回目录中的文件和目录的名称字符串数组 |
File[] listFiles() | 返回目录中的文件和目录的File对象数组 |
IO流:
IO流主要是读取、传输、写入数据内容的。
I: input,O:output
这里的主体说的都是程序(即内存),从外部设备中读取数据到程序中 即为输入流,从程序中写出到外部程序中即为输出流。
IO的分类
-
本地IO和网络IO
本地IO主要是操作本地文件,例如在windows上复制粘贴操作文件,都可以使用java的io来操作
网络IO主要是通过网络发送数据,或者通过网络上传、下载文件。
-
按流向分,输入流和输出流
-
按数据类型分:字节流和字符流
-
按功能分:节点流和处理流
- 程序直接操作目标设备的类称为节点流
- 对节点流进行装饰,功能、性能进行增强,称为处理流
字节流
InputStream是字节输入流的顶层抽象
方法名 | 方法说明 |
---|---|
int read() throws IOException; | 每次读取一个字节的数据,提升为int类型,读取到文件末尾时返回 -1 |
int read(byte b[])throws IOException | 每次读取到字节数组中,返回读取到的有效字节个数,读取到末尾时返回 -1(常用) |
int read(byte b[], int off, int len) | 每次读取到字节数组中,从偏移量off开始,长度为len,返回读取到的有效字节个数,读取到末尾时返回 -1 |
OutputStream是字节输出流的顶层抽象
方法名 | 方法说明 |
---|---|
void write(int b) throws IOException; | 将int值写入到输出流中 |
void write(byte[] b) throws IOException; | 将字节数组写入到输出流中 |
void write(byte b[], int off, int len) throws IOException | 将字节数组从偏移量off开始,写入len个长度到输出流中 |
void flush() throws IOException | 刷新输出流并强制缓冲的字节被写出 |
字符流:
Reader用于读取文本字符
方法名 | 方法说明 |
---|---|
int read() throws IOException | 从输入流中读取一个字符,读到文件末尾时返回-1 |
int read(char cbuf[]) throws IOException | 从输入流中读取字符到char数组中 |
Writer用于写出文本字符
方法名 | 方法说明 |
---|---|
void write(int c) throws IOException | 写入单个字符到输出流中 |
void write(char[] cbuf) throws IOException | 写入字符数组到输出流中 |
void write(char[] cbuf, int off, int len) throws IOException | 写入字符数组的一部分,偏移量off开始,长度为len到输出流中 |
void write(String str) throws IOException | 直接写入字符串到输出流中(常用) |
void write(String str, int off, int len) throws IOException | 写入字符串的一部分,偏移量off开始,长度为len |
Writer append(char c) throws IOException | 追加字符到输出流中 |