本系列博客汇总在这里:Java系列_汇总
目录
- 一、文件的构造器
- 二、文件的创建
- 三、文件的删除
- 四、文件的判断
- 五、文件的获取功能
- 六、目录的子文件获取
- 七、文件夹的遍历
一、文件的构造器
- 示例
//第一种构造器
//创建文件的对象(建议使用)
File file = new File("C:\\Users\\NULL\\Desktop\\demo.wyx");
System.out.println(file);
// 使用反斜线来创建对象
File file1 = new File("C:/Users/NULL/Desktop/demo.wyx");
System.out.println(file1);
// 第二种构造器
File file2 = new File("C:/Users/NULL/Desktop/", "demo.wyx");
System.out.println(file2);
// 第三种构造器,创建文件的父级文件
File file3 = new File("C:/Users/NULL/Desktop/");
File file4 = new File(file3, "demo.wyx");
System.out.println(file4);
二、文件的创建
文件
目录
使用绝对路径(完整路径)创建文件和目录
// 创建文件的对象(建议使用)
File file = new File("C:/Users/NULL/Desktop/demo.wyx");
// 根据对象来创建文件,如果这个文件已经存在就会返回 false
boolean isSuccess = file.createNewFile();
System.out.println(isSuccess);
// 创建目录
File file1 = new File("C:/Users/NULL/Desktop/demo1");
// 单级目录创建
boolean isSuc = file1.mkdir();
System.out.println(isSuc);
File file2 = new File("C:/Users/NULL/Desktop/Demo/demo");
// 多级目录创建
boolean isSuc1 = file2.mkdirs();
System.out.println(isSuc1);使用相对路径(工程文件)创建文件和目录
//使用相对路径来创建文件,不指定判读,相对路径就是工程文件夹
File file = new File("a.txt");
file.createNewFile();
//使用相对路径来创建目录
File file1 = new File("a/b");
file1.mkdirs();
//删除
//file.delete();
//file1.delete();
// 在package里面来创建文件
File file2 = new File("src/cn/tx/hello.mp3");
file2.createNewFile();
//删除
//file2.delete();
三、文件的删除
- 示例源码
//创建文件的对象(建议使用)
File file = new File("C:/Users/NULL/Desktop/demo.wyx");
//根据对象来删除文件,如果这个文件不存在就会返回false
//删除文件不会再回收站里面
boolean isDelete = file.delete();
System.out.println(isDelete);
//创建文件的对象(建议使用)
File file = new File("C:/Users/NULL/Desktop/demo1");
//根据对象来删除目录,如果这个目录不存在就会返回false
//如果目录中不是空就删不掉,一定是空目录才可以删除
boolean isDeleteDir = file.delete();
System.out.println(isDeleteDir);
四、文件的判断
- 示例
//使用相对路劲
File file = new File("a.txt");
//file.createNewFile();
System.out.println("判断文件是否存在:" + file.exists());
System.out.println("判断是否是文件:" + file.isFile());
System.out.println("判断是否是文件夹:" + file.isDirectory());
System.out.println("判断文件是否是绝对路径:" + file.isAbsolute());
System.out.println("判断文件是否可读:" + file.canRead());
System.out.println("判断文件是否可写:" + file.canWrite());
System.out.println("判断文件是否是隐藏:" + file.isHidden());

五、文件的获取功能
- 示例
File file = new File("a.txt");
// 获得文件的绝对路径
String aPath = file.getAbsolutePath();
System.out.println(aPath);
// 获得相对路径
String path = file.getPath();
System.out.println(path);
// 获得文件名(包含后缀)
String name = file.getName();
System.out.println(name);
// 获得文件大小
// 1TB = 1024GB = 1024*1024MB = 1024*1024*1024KB = 1024*1024*1024*1024B
long length = file.length();
System.out.println(length);
// 获得最后的修改时间
long time = file.lastModified();
// 创建时间格式化的对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 创建时间对象
Date date = new Date(time);
String timeStr = sdf.format(date);
System.out.println(timeStr);

六、目录的子文件获取
- 示例
//获得系统的根目录
File[] files = File.listRoots();
for (File file : files)
{
System.out.println(file);
}
System.out.println("------------------------------------");
//定义一个文件对象
File file = new File("C:/Users/NULL/Desktop/");
//获得指定的目录下的所有孩子文件
File[] files1 = file.listFiles();
for (File file2 : files1)
{
System.out.println(file2);
}
System.out.println("---------------------------------------");
//获得指定目录下的所有孩子文件的名字
String[] fileNames = file.list();
for (String fileName : fileNames)
{
System.out.println(fileName);
}

七、文件夹的遍历
递归:递归就是方法调用方法自身,递归一定有跳出条件。
例:
如何使用递归的方式计算阶乘?
5!= 54321
…
N!= n*(n-1)!public class FileDemo8
{
public static void main(String[] args) throws IOException
{
int result = fn(10);
System.out.println(result);
}
/**
* n! = n*(n-1)!
*/
public static int fn(int n)
{
if (n >= 2)
{
// 对方法自身的调用
return n * fn(n - 1);
}
return 1;
}
}使用递归思想查询文件夹的内部所有文件
public class FileDemo9
{
public static int level = 1;
public static void main(String[] args) throws IOException
{
File file = new File("C:/Users/NULL/Desktop/");
printFile(file);
}
/**
* 遍历文件夹下的所有文件
*
*/
public static void printFile(File file)
{
// 判断文件是否是文件夹
if (!file.isDirectory())
{
return;
}
if (!file.exists())
{
return;
}
level++;
// 遍历文件夹内部的文件
File[] files = file.listFiles();
for (File file1 : files)
{
for (int i = 0; i < level; i++)
{
System.out.print("\t");
}
// 获得文件名
String name = file1.getName();
System.out.println(name);
if (file1.isDirectory())
{
// 递归调用
printFile(file1);
}
}
level--;
}
}如何删除一个文件夹下的所有文件(不包括目录)?
public class FileDemo10
{
public static int level = 1;
public static void main(String[] args) throws IOException
{
File file = new File("C:/Users/NULL/Desktop/Demo/");
deleteFile(file);
}
/**
* 遍历文件夹下的所有文件
*/
public static void deleteFile(File file)
{
// 判断文件是否是文件夹
if (!file.isDirectory())
{
return;
}
if (!file.exists())
{
return;
}
// 遍历文件夹内部的文件
File[] files = file.listFiles();
for (File file1 : files)
{
// 如果是文件就删除
if (file1.isFile())
{
file1.delete();
} else
{
// 如果是文件夹就继续遍历
deleteFile(file1);
}
}
}
}
思考:如何删除一个文件夹下的所有文件(包括目录)?
如有错误,欢迎指正!