1.File类
1.1 构造方法
public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
String pathname
= "D:\\aaa.txt";
File file1
= new File(pathname
);
String pathname2
= "D:\\aaa\\bbb.txt";
File file2
= new File(pathname2
);
String parent
= "d:\\aaa";
String child
= "bbb.txt";
File file3
= new File(parent
, child
);
File parentDir
= new File("d:\\aaa");
String child
= "bbb.txt";
File file4
= new File(parentDir
, child
);
一个File对象代表硬盘中实际存在的一个文件或者目录。无论该路径下是否存在文件或者目录,都不影响File对象的创建。
绝对路径:从盘符开始的路径,这是一个完整的路径。
相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。
1.2 常用方法
1.2.1 用于获取功能的方法
public String getAbsolutePath() :返回此File的绝对路径名字符串。public String getPath() :将此File转换为路径名字符串。public String getName() :返回由此File表示的文件或目录的名称。public long length() :返回由此File表示的文件的长度。
public class FileGet {
public static void main(String
[] args
) {
File f
= new File("d:/aaa/bbb.java");
System
.out
.println("文件绝对路径:"+f
.getAbsolutePath());
System
.out
.println("文件构造路径:"+f
.getPath());
System
.out
.println("文件名称:"+f
.getName());
System
.out
.println("文件长度:"+f
.length()+"字节");
File f2
= new File("d:/aaa");
System
.out
.println("目录绝对路径:"+f2
.getAbsolutePath());
System
.out
.println("目录构造路径:"+f2
.getPath());
System
.out
.println("目录名称:"+f2
.getName());
System
.out
.println("目录长度:"+f2
.length());
}
}
说明:length(),表示文件的长度。但是File对象表示目录,则返回值未指定。
1.2.2 用于判断功能的方法
public boolean exists() :此File表示的文件或目录是否实际存在。public boolean isDirectory() :此File表示的是否为目录。public boolean isFile() :此File表示的是否为文件。
public class FileIs {
public static void main(String
[] args
) {
File f
= new File("d:\\aaa\\bbb.java");
File f2
= new File("d:\\aaa");
System
.out
.println("d:\\aaa\\bbb.java 是否存在:"+f
.exists());
System
.out
.println("d:\\aaa 是否存在:"+f2
.exists());
System
.out
.println("d:\\aaa 文件?:"+f2
.isFile());
System
.out
.println("d:\\aaa 目录?:"+f2
.isDirectory());
}
}
1.2.3 用于删除功能的方法
public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。public boolean delete() :删除由此File表示的文件或目录。public boolean mkdir() :创建由此File表示的目录。public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
public class FileCreateDelete {
public static void main(String
[] args
) throws IOException
{
File f
= new File("aaa.txt");
System
.out
.println("是否存在:"+f
.exists());
System
.out
.println("是否创建:"+f
.createNewFile());
System
.out
.println("是否存在:"+f
.exists());
File f2
= new File("newDir");
System
.out
.println("是否存在:"+f2
.exists());
System
.out
.println("是否创建:"+f2
.mkdir());
System
.out
.println("是否存在:"+f2
.exists());
File f3
= new File("newDira\\newDirb");
System
.out
.println(f3
.mkdir());
File f4
= new File("newDira\\newDirb");
System
.out
.println(f4
.mkdirs());
System
.out
.println(f
.delete());
System
.out
.println(f2
.delete());
System
.out
.println(f4
.delete());
}
}
说明:delete方法,如果此File表示目录,则目录必须为空才能删除。
1.2.4 目录的遍历
public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
public class FileFor {
public static void main(String
[] args
) {
File dir
= new File("d:\\java_code");
String
[] names
= dir
.list();
for(String name
: names
){
System
.out
.println(name
);
}
File
[] files
= dir
.listFiles();
for (File file
: files
) {
System
.out
.println(file
);
}
}
}
说明:调用listFiles方法的File对象,表示的必须是实际存在的目录,否则返回null,无法进行遍历。
2.递归
递归:指在当前方法内调用自己的这种现象。
2.1 递归的前提条件
递归一定要有条件限定(递归出口),保证递归能够停止下来,否则会发生栈内存溢出。在递归中递归次数不能太多。否则也会发生栈内存溢出。构造方法,禁止递归。
2.2 递归案例
斐波那契数列,不死神兔问题: 有一对兔子,从出生后的第三个月开始每个月都再生一对兔子,小兔子长到第三个月后每个月有生一对兔子,以此循环,假设兔子永不死,问第二十个月兔子数量为多少?
public class Demo{
public int method(int n
){
if(n
== 1){
return 1;
}
else if(n
== 2){
return 1;
}
else{
return method(n
-1)+method(n
-2);
}
}
public static void main(String
[] args
){
Demo04 d
= new Demo04();
int num
= d
.method(20);
System
.out
.println(num
);
}
}