1,File对象用来获取或处理与磁盘文件相关的信息,例如权限,日期和目录路径。此外,File还浏览子目录层次结构。
2,File类常用API:
exists() :判断磁盘下有无此文件;
getName():返回此File对象所表示的文件名或目录名;
getPath():返回此File对象所对应的路径;
getAbsolutePath():返回此File对象所对应的绝对路径名;
getParent():返回此File对象对应目录(最后一级子目录)的父目录路径名;
renameTo(File newName):重命名此File对象对应的文件,如果重命名成功,返回true,否则返回false;
isFile():判断File对象指向的是否为一个文件;
isDirectory():判断File对象指向的是否为一个目录;
3,通过一个实例来测试部分方法(查询的文件为D盘下的360安全卫士):
<span style="font-size:18px;">package cn.edu.file;
import java.io.File;
public class file {
public static void main(String[] args) {
// 查询磁盘下的文件目录
File file=new File("D:\\360安全卫士");
//判断磁盘下有无此文件
System.out.println(file.exists());
//返回存在的文件
System.out.println(file);
//返回文件所对应的绝对路径名
System.out.println(file.getAbsolutePath());
//返回文件名
System.out.println(file.getName());
//返回父文件目录
System.out.println(file.getParentFile());
}
}</span>
结果:
true
D:\360安全卫士
D:\360安全卫士
360安全卫士
D:\
4,下面通过另外一个实例来讲解File类遍历目录,此目录为D盘下的电脑管家,实现代码如下:
package cn.edu.file;
import java.io.File;
import java.io.IOException;
public class FileUtils {
/*
* 列出file的一些常用操作,比如过滤、遍历等
* 下面列出指定目录下的所有文件
* 传的参数(File dir)在测试类中指定
*/
public static void listDirectory(File dir) throws IOException{
/*
* exists()方法用于判断文件或目录是否存在
* 当目录不存在,或存在但不是目录时抛出异常
*/
if (!dir.exists()) {
throw new IllegalArgumentException("目录:"+dir+"不存在");
}
if (!dir.isDirectory()) {
throw new IllegalArgumentException(dir+"不是目录");
}
//dir.list()或dir.listFiles()用于遍历子目录
String[] filenames=dir.list();
for (String str : filenames) {
System.out.println(str);
//此结果输出的是指定文件下的子目录名或文件名,但不输出子目录下的内容
}
System.out.println("-----------------------");
/*
* 如果要遍历子目录下的内容(子目录的子目录),就需要构造成File对象做递归操作
* File提供了直接返回File对象的API
*下面代码能够实现对此文件目录下的子目录实现详细查询
*/
File[] files=dir.listFiles(); //返回的是直接子目录的抽象
//判断子目录下是否还有子目录
if (files!=null&&files.length>0) {
for (File file : files) {
if (file.isDirectory()) {
//递归操作
listDirectory(file);
}else {
System.out.println(file);
}
}
}
}
}
5,再写一个测试类,来测试上面的代码:
package cn.edu.file;
import java.io.File;
import java.io.IOException;
public class FileUtilTest {
public static void main(String[] args) throws IOException{
<span style="white-space:pre"> </span>// 在这里定义要查询的目录"d://电脑管家",对应上面的参数dir
<span style="white-space:pre"> </span>FileUtils.listDirectory(new File("d://电脑管家"));
}
}
结果(部分):
d:\电脑管家\QQPCMgr\11.1.16908.217\Image\net_err.jpg
d:\电脑管家\QQPCMgr\11.1.16908.217\Image\point.png
d:\电脑管家\QQPCMgr\11.1.16908.217\Image\TPBackImage.png
d:\电脑管家\QQPCMgr\11.1.16908.217\Image\xp.png
d:\电脑管家\QQPCMgr\11.1.16908.217\Image\xpword.png
logodef.ico
MyPhone.ico
MyPhone_Notify.ico
softmgr.ico
softmgr_notify.ico
-----------------------
d:\电脑管家\QQPCMgr\11.1.16908.217\Images\logodef.ico
d:\电脑管家\QQPCMgr\11.1.16908.217\Images\MyPhone.ico
d:\电脑管家\QQPCMgr\11.1.16908.217\Images\MyPhone_Notify.ico
d:\电脑管家\QQPCMgr\11.1.16908.217\Images\softmgr.ico
d:\电脑管家\QQPCMgr\11.1.16908.217\Images\softmgr_notify.ico
d:\电脑管家\QQPCMgr\11.1.16908.217\jgImage.dll
d:\电脑管家\QQPCMgr\11.1.16908.217\jgIOStub.dll
d:\电脑管家\QQPCMgr\11.1.16908.217\kdce.exe
d:\电脑管家\QQPCMgr\11.1.16908.217\libexpatw.dll
d:\电脑管家\QQPCMgr\11.1.16908.217\libjpegturbo.dll
SysOptimize
SysSpeedUp
sysspeedupjmp
sysspeeduprtpplugin
sysstartupmgrjmp
TraceClear
-----------------------
QMAdFilter(big).png