Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。
File类提供了很多用于获取文件本身的一些信息,常用方法:
File类常用方法
String getName() 获取文件的名称
boolean canRead() 判断文件是否是可读的
boolean canWrite() 品判断文件是否可被写入
boolean exits() 判断文件长度是否存在
int length() 获取文件的长度(以字节为单位)
String getAbsolutePath() 获取文件的绝对路径
String getParent() 获取文件的父路径
boolean isFile() 判断此抽象路径名表示的文件是否为普通文件
boolean isDirectory() 判断此抽象路径名表示的是否是一个目录
boolean isHidden 判断文件是否是隐藏文件
long lastModified() 获取文件最后修改时间
Boolean canExecute()
测试应用程序是否可以执行此抽象路径名表示的文件。
boolean createNewFile() 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
boolean delete() 删除由此抽象路径名表示的文件或目录。
File[] listFiles() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
String[] list() 返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
boolean mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。可创建多层文件包
boolean mkdir() 创建由此抽象路径名命名的目录。只能创建一层文件包
boolean reNameTo(File dest) 重命名由此抽象路径名表示的文件。
boolean setReadOnly()
标记由此抽象路径名命名的文件或目录,以便只允许读取操作。
boolean setWritable(boolean writable)
一种方便的方法来设置所有者对此抽象路径名的写入权限。
话不多说,直接上代码:
File类的基本使用
package com.cvicse.file.demo;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
//File类的基本使用
public class FileDemo01 {
public static void main(String[] args) throws IOException {
/**
* IO
* 五个核心类:File,InputStream,OutPutStream,Reader,Writer
* 一个核心接口:Serializable
*/
File file = new File("E:/IOFile/demo/a.txt");
//判断父路径是否存在
if (!file.getParentFile().exists()) {
//创建多级目录
file.mkdirs();
}else {
//如果文件存在
if(file.exists()) {
//删除文件
System.out.println("是否成功删除文件:"+file.delete());
}else {
//创建文件
System.out.println("是否成功创建文件:"+file.createNewFile());
//获取文件的大小,字节为单位
System.out.println(file.length()+"KB"); //转换MB file.length()/1024/1024
/**精准四舍五入,并保留两位小数
* new BigDecimal(file.length()/1024/1024).divide(new BigDecimal(1),2,BigDecimal.ROUND_HALF_UP)
*/
//判断是否是目录
System.out.println("是否是目录:"+file.isDirectory());
//判断是否是文件
System.out.println("是否是文件:"+file.isFile());
//最近一次修改日期
System.out.println("最近一次修改时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new Date(file.lastModified())));
//是否可读 可写,可执行 canWrite,canExcute
System.out.println("是否可读"+file.canRead());
//取得路径
System.out.println(file.getPath());
}
}
}
}
列出指定目录下的所有目录 (递归调用)
package com.cvicse.file.demo;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 列出指定目录下的所有目录 (递归调用)
* @author 15169
*
*/
public class FileDemo2 {
public static void main(String[] args) throws IOException {
File file = new File("E:");
print(file);
}
//输出目录
public static void print(File file) {
if(file.isDirectory()) { //如果是一个目录
File[] result = file.listFiles();
//列出子目录
if(result!=null) { //有些目录不可以访问
for (int i = 0; i < result.length; i++) {
//继续列出
print(result[i]);
}
}
}
System.out.println(file);
}
}
类似资源管理器
package com.cvicse.file.demo;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 类似资源管理器
* @author 15169
*
*/
public class FileDemo3 {
public static void main(String[] args) throws IOException {
File file = new File("E:");
if(file.isDirectory()) {
//获取E盘下子目录与子文件 String[] list = file.list();
File[] result = file.listFiles();
for (int i = 0; i < result.length; i++) {
System.out.println(result[i].getName()+"\t\t\t"
+new SimpleDateFormat("yyyy-MM-dd").format(new Date(result[i].lastModified()))+"\t"
+(result[i].isDirectory()?"文件夹":"文件")+"\t\t"
+(result[i].isFile()?new BigDecimal(result[i].length()/1024/1024).divide(new BigDecimal(1),2,BigDecimal.ROUND_HALF_UP)+"MB":"")
);
}
}
}
}