欢迎提出意见和错误,大家一起进步。
目录
实例化文件对象
//创建File对象
File file = new File("/Users/apple/Downloads/123.txt");
能否读
//是否可以读这个文件 可以读返回true,反之返回False
System.out.println(file.canRead());
能否写
//是否可以写这个文件 可以写返回true,反之返回False
System.out.println(file.canWrite());
能否执行
//是否可以执行这个文件 可以执行返回true,反之返回False
System.out.println(file.canExecute())
是否为文件
//该路径是否为文件 是返回true,反之返回False
System.out.println(file.isFile());
是否为文件夹
//该路径是否为文件夹 是返回true,反之返回False
System.out.println(file.isDirectory());
是否为绝对路径
//该路径是否为绝对路径 是返回true,反之返回False
System.out.println(file.isAbsolute());
该路径是否隐藏
//该路径是否隐藏 是返回true,反之返回False
System.out.println(file.isHidden());
创建新的文件
//创建一个新文件,如果文件已经存在返回False,创建成功返回true
System.out.println(file.createNewFile());
创建新的随机数文件
//创建一个指定前后缀和路径的文件,文件名称的格式:前缀+随机数+后缀
//new为前缀 .txt是后缀 new file是文件对象
System.out.println(File.createTempFile("new",".txt", new File("/Users/apple/Downloads/电影")));
删除文件
//删除一个文件、目录(目录必须为空) 删除成功返回true,反之返回false
System.out.println(new File("ceshi.txt").delete());
路径是否存在
//判断路径是否存在 存在返回true 反之返回false
System.out.println(file.exists());
上一次修改时间
//上一次的修改时间 毫秒格式 可以转换为年月日的格式
//年月日格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//转换时间格式
String modifiedTime=sdf.format(file.lastModified());
//输出上次修改时间
System.out.println(modifiedTime);
获得绝对路径
//获取绝对路径的文件对象格式 返回文件对象
File a= file.getAbsoluteFile();
//输出绝对路径的字符串格式 返回字符串
String b = file.getAbsolutePath();
获得路径的名字
//输出文件的名称 例如:‘/Users/apple/Downloads/123.txt’的名字是‘123.txt’
System.out.println(file.getName());
获得路径的字符串格式
//输出该路径的字符串格式 例如:‘/Users/apple/Downloads/123.txt’的字符串格式是‘/Users/apple/Downloads/123.txt’
//从File对象转换为String对象
String path = file.getPath();
获得父母的信息
//输出父母的绝对路径 字符串格式
String parent = file.getParent();
//输出父母的绝对路径 文件对象格式
File parentFile = file.getParentFile();
路径的大小
//文件的大小 返回的单位是字节
System.out.println(file.length());
创建文件夹
//创建单个文件夹,如果父类文件夹不存在,创建失败
file.mkdir();
//创建多个文件夹,如果父类文件夹不存在,先创建父类文件夹,再创建子类文件夹
file.mkdirs();
路径重命名
//如果两个路径在同一文件夹下,更改文件名,如果不是同一文件夹下,相当于剪切前者到后者
System.out.println(file.renameTo(new File("/Users/apple/Desktop/其他/1/2.txt")));
设置执行权限
//设置可执行
file.setExecutable(true);
设置上一次修改时间
//设置上一次修改的时间
file.setLastModified(new Date().getTime());
设置可读
//设置可读
file.setReadable(true);
设置可写
//设置可写
file.setWritable(true);
设置只读
//设置仅可读
file.setReadOnly();
获得文件夹下的内容
//获得文件夹下的所有文件和文件夹 字符串格式
String[] files = file.list();
//输出
for (String f : files) {
System.out.println(f);
}
//获得文件夹下的所有文件和文件夹 文件对象格式
File[] files2 = file.listFiles();
//输出
for (File f : files2) {
System.out.println(f);
}
获得文件夹下符合条件的内容
//获得文件夹下符合条件的文件和文件夹 字符串格式
String[] files1 = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//dir是文件夹,name是文件的名字
//返回文件名包含'比赛'的文件
return name.contains("比赛");
}
});
//输出
for (String f :
files1) {
System.out.println(f);
}
//获得文件夹下符合格式的文件和文件夹 文件对象格式
//下面重载函数的区别是:过滤器不一样,参数不一样,一个是文件对象,一个是文件夹的文件对象和字符串文件名
File[] files3 = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//dir是文件夹,name是文件的名字
//返回文件名包含'比赛'的文件
return name.contains("比赛");
}
});
//输出
for (File f : files3) {
System.out.println(f);
}
File[] files4 =file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
//返回文件路径包含'比赛'的文件
return pathname.getParent().contains("比赛");
}
});
//输出
for (File f : files4) {
System.out.println(f);
}
综合案例(输入一个路径,返回名称、最后修改时间、大小等信息)
public static void main(String[] args) {
//路径
String path = "/Users/apple/Downloads/电影";
//创建File对象
File file = new File(path);
//如果路径存在
if (file.exists()) {
//输出路径的信息
System.out.println("名称\t\t\t类型\t\t\t最后修改时间\t\t\t大小\n");
System.out.println(file.getName() + "\t\t" + getPathType(file) + "\t\t" + getPathLastModifiedTime(file) + "\t\t"
+ getPathSizeWithStyle(file));
} else {
System.out.println("路径不存在");
}
}
//获得路径的类型
public static String getPathType(File file) {
if (file.isDirectory()) {
return "文件夹";
} else if (file.isFile()) {
return "文件";
} else {
return "未知";
}
}
//获得路径上一次修改时间
public static String getPathLastModifiedTime(File file) {
//年月日格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//获得日历实例
Calendar cal = Calendar.getInstance();
//获取上次修改时间毫秒格式
cal.setTimeInMillis(file.lastModified());
//把毫秒格式转换为年月日格式
String time = sdf.format(cal.getTime());
return time;
}
//获取路径的大小,附带单位
public static String getPathSizeWithStyle(File file) {
//添加单位后的路径
String size = "";
//路径的字节数量
long fileSize = getPathSize(file);
//结果保留小数点2位
DecimalFormat df = new DecimalFormat("#.00");
//根据字节的大小返回不同单位
if (fileSize < 1024) {
return fileSize + "BT";
} else if (fileSize < 1048576) {
size = df.format((double) fileSize / 1024) + "KB";
return size;
} else if (fileSize < 1073741824) {
size = df.format((double) fileSize / 1048576) + "MB";
return size;
} else {
size = df.format((double) fileSize / 1073741824) + "GB";
return size;
}
}
//获取路径的字节数量
public static long getPathSize(File file) {
//如果路径是文件,直接返回字节数量
if (file.isFile()) {
return file.length();
}
//如果路径是文件夹,迭代相加后返回字节数量
else {
//获得文件夹下面的内容
final File[] children = file.listFiles();
//路径字节的总数量
long total = 0;
//遍历路径
if (children != null) {
for (final File child : children)
//把每个路径字节相加
total += getPathSize(child);
}
//返回路径的字节数量
return total;
}
}