版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangxin388/article/details/84060606
学习过程中某个知识点长时间不用老是忘记,在此记录,下次忘记容易复习。
在java.io包中,如果要进行文件自身的操作(例如:创建、删除等),只能依靠java.io.File类完成。File类中的常用方法在下表中列出
No. | 方法 | 类型 | 描述 |
1 | public File(String pathname) | 构造 | c传递完整文件操作路径 |
2 | public File(File parent,String child) | 构造 | s设置父路径与子文件路径 |
3 | public boolean createNewFile() throws IOException | 普通 | c创建新文件 |
4 | public boolean exists() | 普通 | 判断给定路径是否存在 |
5 | public boolean delete() | 普通 | 删除指定路径的文件 |
6 | public File getParentFile() | 普通 | 取得当前路径的父路径 |
7 | public boolean mkdirs() | 普通 | 创建多级目录 |
8 | public long length() | 普通 | 取得文件大小,以字节为单位返回 |
9 | public boolean isFile() | 普通 | 判断给定路径是否是文件 |
10 | public boolean isDirectory() | 普通 | 判断给定路径是否是目录 |
11 | public long lastModified() | 普通 | 取得文件的最后一次修改日期时间 |
12 | public String[] list() | 普通 | 列出指定目录中的全部内容 |
13 | public File[] listFiles() | 普通 | 列出所有的路径以File类对象包装 |
注:File类中提供的方法并不涉及文件的具体内容,只是针对文件本身的操作。
下面通过几个小例子练习File类中方法的使用
1.给定一个文件的完整路径,判断文件是否存在,如果存在则将该文件删除并提示文件已删除,否则创建指定文件
package com.tjut.IOTest;
import java.io.File;
import java.io.IOException;
/**
* Windows中文件分隔符为\
* Linux中文件分隔符为/
* java为了实现跨平台特性使用常量File.separator来表示分隔符
* 之所以separator常量没有大写,是因为JDK 1.0中常量与变量的定义规则相同
* @author 竹轩听雨
*
*/
public class IOTest01 {
public static void main(String[] args) throws IOException {
/**
* 实例化File对象
* 如果文件存在则将其删除,不存在则创造文件
*/
File file = new File("d:" + File.separator + "test.txt");
//此句在Windows中可替换为File file = new File("d:\\test.txt");
if(file.exists()) {//如果文件已存在
file.delete();//删除指定文件
System.out.println("文件已删除");//提示
} else {//否则
System.out.println(file.createNewFile());//创建指定文件
}
}
}
2.创建带路径的文件。如果给定的文件路径为根路径则直接利用createNewFile()方法进行创建;如果要创建的文件存在目录,那么无法将其创建,应先创建父路径再创建文件
package com.tjut.IOTest;
import java.io.File;
import java.io.IOException;
public class IOTest02 {
/**
* 如果文件路径不存在则创建路径
* 否则创建指定路径下的指定文件
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File file = new File("d:" + File.separator + "Demo" + File.separator + "Hello" + File.separator + "test.txt");
if(!file.getParentFile().exists()) {//如果父路径不存在
file.getParentFile().mkdirs();//创建父路径
}
System.out.println(file.createNewFile());//创建文件
}
}
3.判断指定路径的文件是否存在,如果存在则判断其是否是文件,是否是目录,并输出其文件大小及上次修改时间。
package com.tjut.IOTest;
import java.io.File;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
public class IOTest03 {
/**
* 判断指定文件是否存在
* 如果存在则列出一系列文件信息
* @param args
*/
public static void main(String[] args) {
File file = new File("d:" + File.separator + "1.jpg");
if(file.exists()) {
System.out.println("是否是文件:" + file.isFile());
System.out.println("是否是目录:" + file.isDirectory());
System.out.println("文件大小:" + (new BigDecimal((double)file.length() / 1024 / 1024).divide(new BigDecimal(1),2,BigDecimal.ROUND_HALF_UP) + "M"));
System.out.println("上次修改时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified())));
}
}
}
4.列出C盘跟目录下的所有目录
package com.tjut.IOTest;
import java.io.File;
public class IOTest04 {
/**
* 列出C盘根目录下的所有目录
* @param args
*/
public static void main(String[] args) {
File file = new File("c:" + File.separator);
if(file.isDirectory()) {
File results[] = file.listFiles();
for(int i = 0;i < results.length;i++) {
System.out.println(results[i]);
}
}
}
}
5.列出C盘根目录下的所有目录,包括目录中的目录,使用递归完成
package com.tjut.IOTest;
import java.io.File;
public class IOTest05 {
/**
* 列出C盘中的所有目录
* 包括目录中的目录
* 采用递归完成
* @param args
*/
public static void main(String[] args) {
File file = new File("c:" + File.separator);
print(file);
}
public static void print(File file) {
if(file.isDirectory()) {
File results[] = file.listFiles();
if(results != null) {
for(int i = 0;i < results.length;i++) {
print(results[i]);
}
}
}
System.out.println(file);
}
}