:File(掌握)
(1)为了方便我们对硬盘上的文件进行操作,java就提供了一个类File供我们使用。
(3)File类的功能(请补齐方法名)
D:递归删除带内容的目录
(1)为了方便我们对硬盘上的文件进行操作,java就提供了一个类File供我们使用。
(2)File类的构造方法
A:File file = new File("d:\\a.txt");
B:File file = new File("d:\\","a.txt");
C:File file = new File("d:\\");
File file2 = new File(file,"a.txt");
这三种方式表示的意思是等价的。
(3)File类的功能(请补齐方法名)
A:创建功能
创建文件
File file = new File("d:\\a.txt");
System.out.println("createNewFile:" + file.createNewFile());
创建目录
File file3 = new File("aaa");
System.out.println("mkdir:" + file3.mkdir());
创建多级目录
File file4 = new File("bbb\\ccc");
System.out.println("mkdir:" + file4.mkdirs());
B:删除功能
删除文件或者目录
File file = new File("ddd\\eee\\f.txt");
System.out.println("delete:" + file.delete());
C:重命名功能
把文件重命名
// 创建文件对象
File file = new File("a.txt");
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
// 重命名
File dest = new File("b.txt");
System.out.println("renameTo:" + file.renameTo(dest));
D:判断功能
File file = new File("b.txt");
File是否存在
exists():判断File对象是否存在
System.out.println("exists:"+file.exists());
File是否是文件
isFile():判断File对象是否是文件
System.out.println("isFile:"+file.isFile());
File是否是目录
isDirectory():判断File对象是否是目录
System.out.println("isDirectory:"+file.isDirectory());
E:获取功能
File的绝对路径
isAbsolute():判断File对象是否是绝对路径
System.out.println("isAbsolute:"+file.isAbsolute());
File的相对路径
getParent():判断File对象是否是相对路径,否则为null
System.out.println("getParent:"+file.getParent());
File的名称
F:重要的获取功能
String[] list():获取指定目录下的目录或者文件的名称数组
File file = new File("d:\\");
String[] strArray = file.list();
for (String str : strArray) {
System.out.println(str);
}
String[] list(FilenameFilter filter)
File file = new File("d:\\");
// 使用匿名内部类实现 创建了一个实现了文件名称过滤器接口的对象
String[] strArray = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir, name).isFile() && name.endsWith(".mp3");
}
});
// 遍历
for (String str : strArray) {
System.out.println(str);
}
File[] listFiles():获取指定目录下的目录或者文件的File数组
File[] fileArray = file.listFiles();
for (File f : fileArray) {
if (f.isFile()) {
System.out.println(f.getName());
}
}
File[] listFiles(FilenameFilter filter)
(4)案例:
获取指定目录下指定后缀的文件的名称。
要求使用过滤器,并且是匿名内部类的方式实现。
2:递归(理解)
(1)递归:方法定义内部调用方法本身的现象。
举例:
老和尚给小和尚讲故事。
学编程。
(2)注意事项:
A:一定要有出口,否则死递归。
B:次数不能过多,否则内存溢出。
能用循环的地方就不要用递归。
(3)案例:(理解)
A:递归求阶乘
B:递归求斐波那契数列(兔子问题 1,1,2,3,5,8...)
C:递归遍历指定目录下指定后缀的文件名称
获取指定目录下指定后缀的文件的名称。
要求使用过滤器,并且是匿名内部类的方式实现。
File file = new File("test");
String[] strArray = file.list(new FilenameFilter(){
public boolean accept(File dir,String name)
{
return new File(dir,name).isFile() && name.endsWith(".java");
}
});
for(String str : strArray)
{
System.out.println(str);
}
2:递归(理解)
(1)递归:方法定义内部调用方法本身的现象。
举例:
老和尚给小和尚讲故事。
学编程。
(2)注意事项:
A:一定要有出口,否则死递归。
B:次数不能过多,否则内存溢出。
能用循环的地方就不要用递归。
(3)案例:(理解)
A:递归求阶乘
public static void main(String[] args) {
System.out.println(jc(5));
}
public static int jc(int n)
{
if(n==1 )
{
return 1;
}
else
{
return n*jc(n-1);
}
}
B:递归求斐波那契数列(兔子问题 1,1,2,3,5,8...)
public static void main(String[] args) {
System.out.println(jc(5));
}
public static int jc(int n)
{
if(n==1 ||n==2 )
{
return 1;
}
else
{
return jc(n-1)+jc(n-2);
}
}
C:递归遍历指定目录下指定后缀的文件名称
// 封装目录
File file = new File( "D:\\itcast\\20130428");
// 写一个功能实现
printFilePath(file);
}
private static void printFilePath(File file) {
// 获取所有File对象数组
File[] fileArray = file.listFiles();
// 遍历
for (File f : fileArray) {
if (f.isDirectory()) {
// 如果是文件夹就递归
printFilePath(f);
} else {
// 是文件
if (f.getName().endsWith( ".java")) {
// 满足是java文件,就输出该文件的绝对路径
System. out.println(f.getAbsolutePath());
}
}
}
D:递归删除带内容的目录
File file = new File("d:\\test\\day20_digui\\test");
Filedelete(file);
}
private static void Filedelete(File file) {
// TODO Auto-generated method stub
File[] fileArray = file.listFiles();
for ( File f : fileArray) {
if (f.isDirectory()) {
Filedelete(f);
} else { // 删除文件
System. out.println(f.getName() + "***" + f.delete());
}
} // 删除文件夹
System. out.println(file.getName() + "***" + file.delete());