1.文件
1.1定义
文件是相关记录或者放在一起的数据的集合
1.2理解文件
1.文件可以简单的理解成在外设硬盘上面保存数据的一种方式
2.文件由两部分构成:属性(文件名,文件大小,文件类型等) + 内容(文件里面放的东西)
2.File文件操作类
在 java.io 包之中,用 File 类来对文件进行操作(创建、删除、取得信息等)
2.1File类的初始化
java.io.File 类是一个普通的类,如果要实例化对象,则常用到两个构造方法
方法 | 解释 |
---|---|
public File(String pathname) | 创建指定路径文件对象 |
public File(String parent, String child) | 同上,但可指明父路径和子路径 |
测试代码如下
import java.io.File;
public class Test4 {
public static void main(String[] args) {
File file = new File("/Users/yangtongchun/Downloads/hh.txt");
}
}
2.2File类常用方法-基本文件操作
方法 | 说明 |
---|---|
public boolean exists() | 测试指定路径中文件或者目录是否存在 |
public boolean isDirectory() | 判定一个文件是目录 |
public boolean isFile() | 判定是否是文件 |
public boolean delete() | 删除文件 |
public boolean createNewFile() throws | 创建一个新文件 |
示例一:检测文件是否存在
import java.io.File;
public class Test4 {
public static void main(String[] args) {
File file = new File("/Users/yangtongchun/Downloads/hh.txt");
System.out.println(file.exists());
}
}
示例二:检测文件是否存在,若存在就删除
import java.io.File;
public class Test4 {
public static void main(String[] args) {
File file = new File("/Users/yangtongchun/Downloads/ytc.txt");
if (file.exists()) {
file.delete();
}
}
}
示例三:创建新文件
import java.io.File;
import java.io.IOException;
public class Test4 {
public static void main(String[] args) {
File file = new File("/Users/yangtongchun/Downloads/hh.txt");
try {
if (!file.exists()) {
file.createNewFile();
}
} catch (IOException e) {
System.out.println("文件创建失败");
}
}
}
2.3File类常用操作-目录操作
方法 | 解释 |
---|---|
public boolean mkdir() | 创建一个空目录 |
public boolean mkdirs() | 创建多层目录 |
public String getParent() | 取得父路径 |
public File getParentFile() | 取得父File对象 |
示例一:创建一个或多个目录
import java.io.File;
import java.io.IOException;
public class Test4 {
public static void main(String[] args) {
File file = new File("/Users/yangtongchun/Downloads/dir1/dir2/dir3");
if (!file.exists()) {
// 创建第一个没有的目录
file.mkdir();
// 创建所有没有的目录
file.mkdirs();
}
}
}
示例二:获取父路径
import java.io.File;
import java.io.IOException;
public class Test4 {
public static void main(String[] args) {
File file = new File("/Users/yangtongchun/Downloads/ytc.txt");
System.out.println(file.getParent());
}
}
示例三: 获取父目录 File 对象,并在父目录下,创建文件demo.txt
import java.io.File;
import java.io.IOException;
public class Test4 {
public static void main(String[] args) {
File file = new File("/Users/yangtongchun/Downloads/dir1/dir2/dir3/demo.txt");
File pfile = file.getParentFile();
try {
if (!pfile.exists()) {
pfile.mkdirs();
}
if (!file.exists()) {
file.createNewFile();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.4File类文件常用方法-文件属性操作
方法 | 解释 |
---|---|
public long length() | 取得文件大小(字节) |
public long lastModified() | 最后一次修改日期 |
示例:取得文件信息
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class Test4 {
public static void main(String[] args) {
File file = new File("/Users/yangtongchun/Downloads/dir1/dir2/dir3/demo.txt");
System.out.println("文件长度" + file.length());
System.out.println("文件最后一次修改日期" + new Date(file.lastModified()));
}
}
2.5File类的常用方法-其他方法
方法 | 解释 |
---|---|
public File[] listFiles() | 列出一个目录的全部组成 |
示例1:列出某个目录中的全部组成
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class Test4 {
public static void main(String[] args) {
File file = new File("/Users/yangtongchun/Downloads");
if (file.exists() && file.isDirectory()) {
File[] files = file.listFiles();
for(File file1 : files) {
System.out.println(file);
}
}
}
}
示例2:递归打印某个目录所有文件
方法一:
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class Test4 {
public static void main(String[] args) {
File file = new File("/Users/yangtongchun/Downloads");
listAllFiles(file);
}
public static void listAllFiles(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File file1 : files) {
if (file1.isDirectory()) {
listAllFiles(file1);
} else {
System.out.println(file1);
}
}
}
System.out.println(file);
}
}
方法二:
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Test4 {
public static void main(String[] args) {
File file = new File("/Users/yangtongchun/Downloads");
List<File> list = listAllFiles(file);
list.stream().forEach((f) -> System.out.println(f.getPath()));
}
public static List<File> listAllFiles(File file) {
List<File> list = new ArrayList<>();
list.add(file);
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File file1 : files) {
if (file1.isDirectory()) {
list.addAll(listAllFiles(file1));
} else {
list.add(file1);
}
}
}
return list;
}
}