File类 的概述
File就是一个路径,这个路径可以是文件也可以是文件夹
路径又分为绝对路径和相对路径
绝对路径:从盘符开始 ,是一个固定路径
相对路径:对于某个位置,在eclipse下是指当前项目下,在dos下指的是当前路径
File类的构造
给File类构造函数传一个String类型的路径就可以创建对象
File(String pathname):根据一个路径得到File对象
File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
File类的几大动能
创建功能:
public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
注意: 如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。
判断功能:
public boolean isDirectory():判断是否是目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判断是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏
删除功能 :
public boolean delete():删除文件或者文件夹
注意事项:
Java中的删除不走回收站,所以使用时一定要谨慎使用。
要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹,要想删除必须把里面内容先删掉,这里用递归比较多。
重命名功能:
注意事项:
如果路径名相同,就是改名。
如果路径名不同,就是改名并剪切
public static void main(String[] args) {
File file = new File("ddd");
File file2 = new File("fff");//如果路径相同就直接改名,路径不同就剪切并改名
boolean b = file.renameTo(file2);//此处只能放一个file对象
System.out.println(b);
获取功能:
public class File类的获取功能 {
public static void main(String[] args) {
/*获取功能
* public String getAbsolutePath():获取绝对路径
* public String getPath():获取相对路径
* public String getName():获取名称
* public long length():获取长度。字节数
* public long lastModified():获取最后一次的修改时间,毫秒值
* public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
* public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组 */
//demo();
//demo2();
File file2 = new File("F:\\day14java基础\\19");
String[] arr1 = file2.list();//获取指定目录下的所有文件或者文件夹的名称数组
for (String string : arr1) {
System.out.println(string);
}
System.out.println("-------------");
File[] subFiles = file2.listFiles();//获取指定目录下的所有文件或者文件夹的File数组
for (File file : subFiles) {
System.out.println(file);
}
}
private static void demo2() {
File file2 = new File("F:\\day14java基础\\19\\he.txt");
long l = file2.length();//获取的是文件的长度,返回的是文件的字节数
System.out.println(l);
File file3 = new File("C:\\drivers");
long l1 = file3.length();// 获取的是文件夹的长度,返回的是零
System.out.println(l1);
}
private static void demo() {
File file1 = new File("he.txt");
System.out.println(file1.getAbsolutePath());//获取绝对路径
System.out.println(file1.getPath());//获取相对路径
System.out.println(file1.getName());//获取名称
}
}
文件名称过滤器的概述
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
通过一个练习了解过滤器的使用
/*需求:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称*/
public static void main(String[] args) {
File file = new File("E:\\"); //创建File对象并关联E文件夹
/*第一种方法
* String[] arr = file.list(); //获取这个文件路径下所有的文件和文件夹路径
*
for (String string : arr) {
if (string.endsWith(".jpg")) {
System.out.println(string);
}
}*/
/*第二种方法 这种方法以后用的较多
* File[] subFiles = file.listFiles();//获取文件夹路径
for (File file2 : subFiles) { //将文件夹内容进行遍历
if (file2.isFile()&&file.getName().endsWith(".jpg")) {//判断是文件并且后缀是.jpg
System.out.println(file.getName());
}
}*/
//第三种方法 这里用的是文件名称的过滤器
String[] arr = file.list(new FilenameFilter(){//传入过滤器对象
@Override
public boolean accept(File file, String name) {
File file2 = new File(file,name);//创建File对象
//父 子
return file2.isFile()&&file2.getName().endsWith(".jpg");
}});//判断
for (String s : arr) {
System.out.println(s);//遍历并打印
}
}
}
File类的递归
public static void main(String[] args) {
//普通方法 如果太大了就不能运行
/* int result = 1;
for (int i = 0; i < 5; i++) {
result = result * i;
}
System.out.println(result);*/
System.out.println(fun(5));
}
//利用递归进行运算
/** 递归
* 方法自己调用自己
* 弊端:容易栈内存溢出
* 好处:不用知道调用次数
*
* 构造函数不能使用递归
* 递归调用是否必须有返回值?
* 不一定(可以有也可以没有)*/
public static int fun(int num){
if(num == 1){
return 1;
}else{
return num * fun(num-1);//自身方法的不断调用
}
}
}