一 概念
什么是文件?
文件就是保存数据的地方。
二 文件流
文件在程序中是以流的形式来操作的。
流——数据在数据源(文件)和程序(内存)之间经历的路径。
- 输入流:数据从数据源(文件)到程序(内存)的路径。
- 输出流:数据从程序(内存)到数据源(文件)的路径。
- 类比:喝水是输入流(水从被子到嘴巴),吐出来是输出流(水从嘴巴到被子),嘴是内存,被子是文件。以人为参照物,进入人体的是输入流,排出人体的是输出流。
File类的API可以查阅文档或者直接进入源码查看。
JDK 8 官方API:https://docs.oracle.com/javase/8/docs/api/
文件常用操作
创建文件对象相关的构造器和方法
new File(String pathname);
根据路径构建一个File对象。
new File(File parent,String child);
根据父目录文件 + 子路径构建。
new File(String parent,String child);
根据父目录 + 子路径构建。
示例代码:
package com.io.demo.file;import org.junit.jupiter.api.Test;import java.io.File;
import java.io.IOException;public class FileDemo {@Testpublic void createFile1() {File file = new File("d:\\file.txt");try {boolean result = file.createNewFile();if(result){System.out.println("file create success!");}else{System.out.println("file create fail!");}} catch (IOException e) {e.printStackTrace();}}@Testpublic void createFile2(){File file = new File("d:\\","file2.txt");try {boolean result = file.createNewFile();if(result){System.out.println("file2 create success!");}else{System.out.println("file2 create fail!");}} catch (IOException e) {e.printStackTrace();}}@Testpublic void createFile3(){File file = new File("d:\\");File file3 = new File(file,"file3.txt");try {boolean result = file3.createNewFile();if(result){System.out.println("file3 create success!");}else{System.out.println("file3 create fail!");}} catch (IOException e) {e.printStackTrace();}}}
获取文件的相关信息
File类的相关方法。
示例代码:
@Testpublic void fileInfo(){File file = new File("d:\\file.txt");System.out.println("文件名:"+file.getName());System.out.println("文件路径:"+file.getAbsolutePath());System.out.println("文件父级目录:"+file.getParent());System.out.println("文件大小:"+file.length()+" 字节");System.out.println("文件是否存在:"+file.exists());//trueSystem.out.println("是不是一个文件:"+file.isFile());//trueSystem.out.println("是不是一个目录:"+file.isDirectory());//false}
输出结果:
文件名:file.txt
文件路径:d:\file.txt
文件父级目录:d:\
文件大小:0 字节
文件是否存在:true
是不是一个文件:true
是不是一个目录:false
目录的操作和文件删除
- mkdir 创建一级目录
- mkdirs 创建多级目录
- delete 删除空目录或文件
示例代码:
/*** 创建单目录*/@Testpublic void mkdir(){File file = new File("d:\\path01");boolean result = file.mkdir();if(result){System.out.println("目录创建成功");}else{System.out.println("目录创建失败");}}/*** 创建多级目录*/@Testpublic void mkdirs(){File file = new File("d:\\path01\\path02\\path03");boolean result = file.mkdirs();if(result){System.out.println("目录创建成功");}else{System.out.println("目录创建失败");}}/*** 删除文件*/@Testpublic void deleteFile(){String filePath = "d:\\file.txt";File file = new File(filePath);if(file.exists()){boolean result = file.delete();if(result){System.out.println("删除成功");}else{System.out.println("删除失败");}}else{System.out.println("文件不存在");}}/*** 删除空目录* 目录 path01 如果是空目录,则可以删除成功;否则会失败。*/@Testpublic void deleteDirectory(){String filePath = "d:\\path01";File file = new File(filePath);if(file.exists()){boolean result = file.delete();if(result){System.out.println("删除成功");}else{System.out.println("删除失败");}}else{System.out.println("文件目录不存在");}}