从今天开始,我要将自己所学所想,参考API,将以讲义的形式,列出自己觉得重要的东西,加深印象!
-------------------------------------------------这是废话与正文的分割线----------------------------------------------------------------------------------------------------
File类,在java.io包中,在java语言中,它既可以表示文件,又可以表示目录。(正文中我直接称为文件,按照理解的来就好)
它主要的构造方法有:
1.new File(File parent,String child); //根据parent目录的全路径名(即parent.getAbsoultPath()),和child的文件名组成一个新的file
2.new File(String parent,String child);//和1的构造方法很类似 parent就是child文件的上一级目录·
3.new File(String pathName);//根据pathName(全路径名或相对路径名),去构造出新的file
4.new File(URI uri);//URI转为抽象的路径名,构建出一个新的file对象
这里我只总结常用的方法:
1.mkdir();//创建单级目录,如果是多级目录,则创建不成功,如:pathName = "D:/a/d"; 在D盘中没有a,b目录,这个就会创建失败,这就需要用到mkdirs();
需要补充一点的就是,有没有发现我的pathName中路径用的是正斜杠,而我们所看到的路径都是反斜杠的,原因是在java中'\'是转义字符,有特殊的功能
为了避免冲突,也可以写成pathName = "D:\\a\\d"; 因为"\\" 在java中输出的是'\';
2.mkdirs();可创建多级目录(包括单级),所以推举按使用。
3.isFile()与isDirectory()用来判断是否是文件|是否是文件夹,返回值为boolean值,在系统中,如果不是文件就是文件夹,所以这两个方法用一个接好了
4.getpath()文件的相对路径,相对顾名思义,它相对的是project项目程序来说的,如果在工程目录下,则输出文件名既可以了,如果在项目文件夹外,则输出的就是全路径,
和getAbsoultPath()一致了。
5.getAbsoultPath()文件的绝对路径,即文件的全路径
6.length()文件长度,即文件大小(字节)
7.getTotalSpace();获得分区的总大小,如这文件在D盘,则该函数返回的就是D盘的总大小
8.getUsableSpace;获得分区可用空间大小
9.list()返回String[]数组,该路径下所有文件与目录名。
10.listFiles():返回File[]数组,该路径下所有目录和文件的对象
11.listRoots();返回分区File[]对象,如你电脑里C:;D:;E:
File类主要理解记住这些方法基本上就可以了,如果有不懂可以再查看API就ok了!我们下面来用File类里面的方法去遍历某目录中的文件,
思路:
1.判断是文件还是目录,如果是文件,则打赢出absoultPath;
2.是目录则用递归,继续判断处理
不多说看代码与注释,理论再多还是得实践!
import java.io.File;
/**
* 遍历某目录下的所有文件
* @author Administrator
*
*/
public class traverseDir {
public static void main(String[] args) {
String path = "D:/new";//这里填写你要遍历目录路径
File file = new File(path);
traverse(file);
}
public static void traverse(File file){
//先对传入参数做判空处理
if (null == file) {
return;
}
//递归头,递归的出路
if (file.isFile()) {
System.out.println(file.getAbsolutePath());
return;
}
File[] files = file.listFiles();
//如果目录为空目录则要return,否则会空指针异常
if (files == null) {
return;
}
for (File file2 : files) {
if (file2.isDirectory()) {
traverse(file2);//递归
}else {
System.out.println(file2.getAbsolutePath());
}
}
}
}
还补充一个例子就是,删除某路径下的文件及其子目录
import java.io.File;
/**
* 删除临时文件及其内部文件夹
* @author Administrator
*
*/
public class DeleteFiles {
/**
* @param args
*/
public static void main(String[] args) {
String path = "F:\\temp";//这里填写你文件路径
File file = new File(path);
delete(file, path);
}
public static void delete(File file,String path) {
// 违反验证
if (file == null) {
return;
}
if (file.isFile()) {
file.delete();
}
File[] mFiles = file.listFiles();
if (mFiles == null) {
return;
}
for (File file2 : mFiles) {
delete(file2,path);//递归
}
//删除目录
if (!file.getAbsolutePath().equals(path)) {
file.delete();
}
}
}
注意:在写文件路径path时,最好是用反双斜杠“\\”,如果你用"/"在比较
file.getAbsolutePath().equals(path)
时,会发现匹配不上,那么删除子目录就不会成功!
结语:会飞时别忘了破茧时的痛楚!