除了前两章介绍的对文件基础操作的方法之外,还可以使用File类中提供的其他方法来获取文件本身的一些信息。
1.文件是否可读
public boolean canRead();
2.文件是否可写
public boolean canWrite();
3.文件是否可执行
public boolean canExecute();
4.获取文件字节数
public long length();
该方法返回值的类型为long,单位为字节。(long型一般可表示,时间,日期,内存大小,ID号)
5.获取文件名
public String getName();
6.获取文件完整路径
public String getPath(); (也可以使用toString()方法)
7.获取最后一次修改日期时间
public long lastModified();
该文件最后一次修改日期的毫秒数被返回,然后可以使用Date类将其转化为日期,由于Date类出去的结果不容易理解,可以进一步使用SimpleDateFormat类进行日期格式化,代码如下:
File file = new File("D:"+ File.separator +"joshiniti.txt");
Date lastModifiedDate = new Date(file.lastModified()); //将毫秒数转化为Date的一个实例化对象。
SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"); //实例化一个SimpleDateFormat对象
String lastModifiedDateStr = sdFormat.format(lastModifiedDate); //日期格式化
System.out.println(lastModifiedDateStr);
8.判断是否是隐藏文件
public boolean isHidden();
9.判断是否是目录
public boolean isDirectory();
10.判断是否是文件
public boolean isFile();
11.获取一个目录下的所有文件(包括子目录和子文件)
public File[] listFiles();
实例1:给定一个目录(以D盘为例),列出该目录下的所有子目录。
File file = new File("D:"+ File.separator);
if( file.isDirectory() ){
File[] subFiles = file.listFiles();
if( subFiles != null ){
for(File subFile : subFiles){
if( subFile.isDirectory()){
System.out.println(subFile.getName());
}
}
}
}
如果说是要列出所有子文件的话,只需要将 subFile.isDirectory() 变为subFile.isFile()即可。
实例2:给定一个目录,将该目录下的所有文件的信息全部列出来,包括子目录中的文件信息。(在这种情况下,最好的处理方法就是使用递归)
public static void accessFile(File file){
if( file.isDirectory() ){ //是目录的话
File[] subFiles = file.listFiles(); //获取所有子文件
if( subFiles != null ){
for(File subFile : subFiles){
accessFile(subFile); //递归处理
}
}
}
System.out.println(file); //输出文件路径
}
注意,如果将代码中的输出语句换成删除语句 file.delete() 的话,那么此代码的功能是完成一个文件夹的删除操作。尤其是当指定的是一个磁盘路径时,该磁盘下的所有文件将被删除。(谨慎使用!!)