(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)
獲取指定目錄下指定後綴的文件的名稱。
要求使用過濾器,並且是匿名內部類的方式實現。
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());