读完本文你能学会使用FileInputStream和FileOutputStream进行文件内容的输入输出。
在本文的最后有小案例:在指定目录下递归查询该目录下的所有子文件,进行文件的复制等,这些操作都是使用FileInputStream和FileOutputStream类进行文件操作完成的
- 使用File类来打开一个文件,并可以使用API打印出文件的信息
// 获得文件的相关信息
public static void main(String[] args) throws IOException {
// pathname:可以是绝对路径也可以是相对路径
// 如果直接写文件名,默认是相对路径
File file = new File("./test.txt");
System.out.println(file.getName());
System.out.println(file.getParent());
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
System.out.println(file.getCanonicalPath());
}
- 使用File类创建文件
- 使用File类创建单级/多级目录,删除单级/多级目录(删除多级目录以及目录下的所有文件)
// 创建普通文件和文件夹,并且删除普通文件和文件夹
public static void main(String[] args) throws IOException, InterruptedException {
// test.txt文件不存在
File file = new File("test.txt");
// 创建文件,并立刻删除(为了效果显示中间使用thread进行了休眠)
file.createNewFile(); // 创建文件
Thread.sleep(3000);
file.delete(); // 删
// 创建文件,并在退出的时候删除该文件
file.createNewFile(); // 创建文件
Thread.sleep(3000);
file.deleteOnExit(); // 不立即删除文件,而是在程序退出的时候删除
Thread.sleep(300
// 创建目录
File dir = new File("./dir");
dir.mkdir(); // 使用mkdir只能创建单级目录
System.out.println(dir.isDirectory());
Thread.sleep(1000);
dir.deleteOnExit(); // 不立即删除文件夹,而是在程序退出的时
File dirs = new File("./dir1/dir2/dir3");
dirs.mkdirs(); // 使用mkdirs可以创建多级目录
System.out.println(dirs.isDirectory());
// 注意delete不能删除多级目录,只能通过递归的方式来删除多级目录
// 调用deleteDir函数
deleteDir("./dir1");
Thread.sleep(1000);
}
public static void deleteDir(String basePath) {
File file = new File(basePath);
if (file.isFile()) {
file.delete();
}
String[] dir = file.list();
for (String d : dir) {
deleteDir(basePath + "/" + d);
}
file.delete();
}
- 显示目录下的所有文件(如果目录下有目录,不显示子目录下的文件)
- 显示目录下的所有文件,包括子目录下的文件
// 显示所有文件列表
public static List<String> files = new ArrayList<>(); // 文件列表
public static void main(String[] args) {
// 打印当前目录(.)下的所有文件
File file = new File(".");
String[] list = file.list(); // 使用list()方法可以返回当前目录下的所有文件
System.out.println(Arrays.toString(list)); // 将String[]数组转换成Str
// 打印当前目录下的所有文件及其子文件
showAllFile(".");
for (String f : files) {
System.out.println(f