在变量、数组、对象和集合中存储的数据是暂时存在的,一旦程序结束它们就会丢失。为了能够永久地保存程序创建的数据,需要将其保存到磁盘文件中,这样就可以在其他程序中使用它们。Java 的 I/O(输入/输出)技术可以将数据保存到文本文件和二进制文件中, 以达到永久保存数据的要求。
学习目标
本章首先从基础的流概念、流的分类、系统流的使用开始介绍,进而介绍如何操作文件、读取文件和写入文件。掌握 Java 中 I/O 处理技术能够提高读者对数据的处理能力。
File类
- Java里万物皆对象
- 文件的两种表现形式:
- 文件夹directory
- 普通文件file
- 文件属性:
- 文件名
- 文件大小
- 存放路径
- 文件方法:File类中没有修改操作
- 增
- 删
- 查
File类
创建文件
-
创建文本文件或者创建文件夹或者多级文件夹
- .createNewFile():创建单个文本文件(若文本文件已经存在则不创建)
- .mkdir():创建单个文件夹
- .mkdirs():创建多个文件夹
代码演示:对象.createNewFile()/.mkdir()/.mkdirs()
import java.io.File;
import java.io.IOException;
public class FDemo {
public static void main(String[] args)throws Exception {
File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt");
//创建一个新文件
boolean file11=file1.createNewFile();//存在同名文件就不创建
System.out.println(file11?"创建成功":"创建失败");
//创建一个文件夹
File file12 = new File("C:\\Users\\chai\\Desktop\\cdg");
boolean file2=file12.mkdir();//存在同名文件夹就不创建
System.out.println(file2?"创建成功":"创建失败");
//创建多级文件夹
File file13 = new File("C:\\Users\\chai\\Desktop\\cdg\\web\\html\\tag");
boolean file3=file13.mkdirs();//存在同名文件夹就不创建
System.out.println(file3?"创建成功":"创建失败");
throw new IOException("");
}
}
删除文件
- .delete
import java.io.File;
public class FDemo01 {
public static void main(String[] args) {
File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt");
file1.createNewFile();//存在同名文件就不创建
boolean file11 = file1.delete();
System.out.println(file11?"删除成功":"未删除");
}
}
查询文件
-
.exists:判断某个路径的文件是否存在
import java.io.File; public class FDemo02 { public static void main(String[] args) throws Exception { File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt"); file1.createNewFile();//存在同名文件就不创建 boolean file11=file1.exists(); System.out.println(file11?"文件已经存在,不用创建":"文件未存在,需要创建"); } }
-
.length:获取文件大小
import java.io.File; public class FDemo02 { public static void main(String[] args) throws Exception { File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt"); file1.createNewFile();//存在同名文件就不创建 long file12=file1.length(); System.out.println(file12); } }
-
.getName:返回此路径下的文件名
import java.io.File; public class FDemo02 { public static void main(String[] args) throws Exception { File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt"); file1.createNewFile();//存在同名文件就不创建 System.out.println("Name"+file1.getName();); } }
-
.getPath:返回此文件名的路径的字符串形式
import java.io.File; public class FDemo02 { public static void main(String[] args) throws Exception { File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt"); file1.createNewFile();//存在同名文件就不创建 System.out.println("Path"+file1.getPath();); } }
递归:自己调用自己
-
isDirectory():判断这个文件是否为文件夹
-
listFiles():返回一个包含所有文件抽象路径的数组
-
通过递归扫描指定文件夹下的所有文件
import java.io.File; /* 通过递归扫描抽象路径下的所有文件 */ public class FDemo03 { public static void main(String[] args) { FDemo03.showFile("C:\\Users\\chai\\Desktop"); } //查看文件目录下的所有文件 public static void showFile(String pathname){ File file1 = new File(pathname); //判断文件是否是文件夹 boolean file11=file1.isDirectory(); //选择某个文件夹下所有文件 if(file11){ //是文件夹 File[] file12=file1.listFiles(); for (File filedetail:file12) { boolean file13=filedetail.isDirectory(); if(file13){判断是否为文件夹 showFile(filedetail.getPath()); }else{ System.out.println("普通文件"+filedetail.getPath()); } } }else{//不是文件夹 //获取文件路径 System.out.println("文件路径:"+file1.getPath()); } } }
-