目錄
引言
一、File類概述
1、概念
2、構造方法
3、常用方法
(1)、方法列舉
(2)、代碼演示(部分常用方法)
(3)、注意事項
二、File類導圖建模
三、遞回
1、什么是遞回
2、遞回的基本原理
3、遞回三大要素
四、圖形&代碼理解遞回
1、圖形建模
2、代碼演示
五、總結
引言
很多東西如果不是怕別人撿去,我們一定會扔掉,
——王爾德
Because of You (Kelly Clarkson)
(分享個歌單)
一、File類概述
1、概念
1、檔案和目錄名路徑的抽象表示形式 ,File封裝的并不是一個真正存在的檔案,僅僅是一個路徑名,它可以存在,也可以不存在,后面需要通過對應的方法將其變成真正存在的,
2、File類主要是JAVA為檔案這塊的操作(如洗掉、新增等)而設計的相關類
3、File類的包名是java.io,其實作了Serializable, Comparable兩大介面以便于其物件可序列化和比較,
2、構造方法
通過給定的父抽象路徑名和子路徑名字串創建一個新的File實體,
File(File parent, String child);
通過將給定路徑名字串轉換成抽象路徑名來創建一個新 File 實體,
File(String pathname)
根據 parent 路徑名字串和 child 路徑名字串創建一個新 File 實體,
File(String parent, String child)
通過將給定的 file: URI 轉換成一個抽象路徑名來創建一個新的 File 實體,
File(URI uri)
代碼演示
/*
- File的建構式
- */
public static void main(String[] args) {
//File(String pathname) 將指定路徑名轉換成一個File物件
File file = new File("D:\\1.txt");
System.out.println(file);
//File(String parent,String child) 根據指定的父路徑和檔案路徑創建File物件
File file1 = new File("D:\\a","1.txt");
System.out.println(file1);
//File(File parent,String child) 根據指定的父路徑物件和檔案路徑創建File物件
File parent = new File("D:\\a");
File file2 = new File(parent, "1.txt");
System.out.println(file2);
File file3 = new File(new File("D:\\a"),"1.txt");
System.out.println(file3);
}
3、常用方法
(1)、方法列舉
| 序號 | 方法描述 |
|---|---|
| 1 | public String getName() 回傳由此抽象路徑名表示的檔案或目錄的名稱, |
| 2 | public String getParent()、 回傳此抽象路徑名的父路徑名的路徑名字串,如果此路徑名沒有指定父目錄,則回傳 null, |
| 3 | public File getParentFile() 回傳此抽象路徑名的父路徑名的抽象路徑名,如果此路徑名沒有指定父目錄,則回傳 null, |
| 4 | public String getPath() 將此抽象路徑名轉換為一個路徑名字串, |
| 5 | public boolean isAbsolute() 測驗此抽象路徑名是否為絕對路徑名, |
| 6 | public String getAbsolutePath() 回傳抽象路徑名的絕對路徑名字串, |
| 7 | public boolean canRead() 測驗應用程式是否可以讀取此抽象路徑名表示的檔案, |
| 8 | public boolean canWrite() 測驗應用程式是否可以修改此抽象路徑名表示的檔案, |
| 9 | public boolean exists() 測驗此抽象路徑名表示的檔案或目錄是否存在, |
| 10 | public boolean isDirectory() 測驗此抽象路徑名表示的檔案是否是一個目錄, |
| 11 | public boolean isFile() 測驗此抽象路徑名表示的檔案是否是一個標準檔案, |
| 12 | public long lastModified() 回傳此抽象路徑名表示的檔案最后一次被修改的時間, |
| 13 | public long length() 回傳由此抽象路徑名表示的檔案的長度, |
| 14 | public boolean createNewFile() throws IOException 當且僅當不存在具有此抽象路徑名指定的名稱的檔案時,原子地創建由此抽象路徑名指定的一個新的空檔案, |
| 15 | public boolean delete() 洗掉此抽象路徑名表示的檔案或目錄, |
| 16 | public void deleteOnExit() 在虛擬機終止時,請求洗掉此抽象路徑名表示的檔案或目錄, |
| 17 | public String[] list() 回傳由此抽象路徑名所表示的目錄中的檔案和目錄的名稱所組成字串陣列, |
| 18 | public String[] list(FilenameFilter filter) 回傳由包含在目錄中的檔案和目錄的名稱所組成的字串陣列,這一目錄是通過滿足指定過濾器的抽象路徑名來表示的, |
| 19 | public File[] listFiles() 回傳一個抽象路徑名陣列,這些路徑名表示此抽象路徑名所表示目錄中的檔案, |
| 20 | public File[] listFiles(FileFilter filter) 回傳表示此抽象路徑名所表示目錄中的檔案和目錄的抽象路徑名陣列,這些路徑名滿足特定過濾器, |
| 21 | public boolean mkdir() 創建此抽象路徑名指定的目錄, |
| 22 | public boolean mkdirs() 創建此抽象路徑名指定的目錄,包括創建必需但不存在的父目錄, |
| 23 | public boolean renameTo(File dest) 重新命名此抽象路徑名表示的檔案, |
| 24 | public boolean setLastModified(long time) 設定由此抽象路徑名所指定的檔案或目錄的最后一次修改時間, |
| 25 | public boolean setReadOnly() 標記此抽象路徑名指定的檔案或目錄,以便只可對其進行讀操作, |
| 26 | public static File createTempFile(String prefix, String suffix, File directory) throws IOException 在指定目錄中創建一個新的空檔案,使用給定的前綴和后綴字串生成其名稱, |
| 27 | public static File createTempFile(String prefix, String suffix) throws IOException 在默認臨時檔案目錄中創建一個空檔案,使用給定前綴和后綴生成其名稱, |
| 28 | public int compareTo(File pathname) 按字母順序比較兩個抽象路徑名, |
| 29 | public int compareTo(Object o) 按字母順序比較抽象路徑名與給定物件, |
| 30 | public boolean equals(Object obj) 測驗此抽象路徑名與給定物件是否相等, |
| 31 | public String toString() 回傳此抽象路徑名的路徑名字串, |
(2)、代碼演示(部分常用方法)
創建檔案目錄:
| 方法名 | 說明 |
|---|---|
| public boolean createNewFile() | 當具有該名稱的檔案不存在時,創建一個由該抽象路徑名命名的新空檔案 |
| public boolean mkdir() | 創建由此抽象路徑名命名的目錄 |
| public boolean mkdirs() | 創建由此抽象路徑名命名的目錄,包括任何必需但不存在的父目錄 |
示例代碼:
public class FileDemo02 {
public static void main(String[] args) throws IOException {
//需求1:我要在E:\\itcast目錄下創建一個檔案java.txt
File f1 = new File("E:\\itcast\\java.txt");
System.out.println(f1.createNewFile());
System.out.println("--------");
//需求2:我要在E:\\itcast目錄下創建一個目錄JavaSE
File f2 = new File("E:\\itcast\\JavaSE");
System.out.println(f2.mkdir());
System.out.println("--------");
//需求3:我要在E:\\itcast目錄下創建一個多級目錄JavaWEB\\HTML
File f3 = new File("E:\\itcast\\JavaWEB\\HTML");
// System.out.println(f3.mkdir());
System.out.println(f3.mkdirs());
System.out.println("--------");
//需求4:我要在E:\\itcast目錄下創建一個檔案javase.txt
File f4 = new File("E:\\itcast\\javase.txt");
// System.out.println(f4.mkdir());
System.out.println(f4.createNewFile());
}
}
判斷功能:
| 方法名 | 說明 |
|---|---|
| public boolean isDirectory() | 測驗此抽象路徑名表示的File是否為目錄 |
| public boolean isFile() | 測驗此抽象路徑名表示的File是否為檔案 |
| public boolean exists() | 測驗此抽象路徑名表示的File是否存在 |
獲取功能:
| 方法名 | 說明 |
|---|---|
| public String getAbsolutePath() | 回傳此抽象路徑名的絕對路徑名字串 |
| public String getPath() | 將此抽象路徑名轉換為路徑名字串 |
| public String getName() | 回傳由此抽象路徑名表示的檔案或目錄的名稱 |
| public String[] list() | 回傳此抽象路徑名表示的目錄中的檔案和目錄的名稱字串陣列 |
| public File[] listFiles() | 回傳此抽象路徑名表示的目錄中的檔案和目錄的File物件陣列 |
示例代碼:
public class FileDemo04 {
public static void main(String[] args) {
//創建一個File物件
File f = new File("myFile\\java.txt");
// public boolean isDirectory():測驗此抽象路徑名表示的File是否為目錄
// public boolean isFile():測驗此抽象路徑名表示的File是否為檔案
// public boolean exists():測驗此抽象路徑名表示的File是否存在
System.out.println(f.isDirectory());
System.out.println(f.isFile());
System.out.println(f.exists());
// public String getAbsolutePath():回傳此抽象路徑名的絕對路徑名字串
// public String getPath():將此抽象路徑名轉換為路徑名字串
// public String getName():回傳由此抽象路徑名表示的檔案或目錄的名稱
System.out.println(f.getAbsolutePath());
System.out.println(f.getPath());
System.out.println(f.getName());
System.out.println("--------");
// public String[] list():回傳此抽象路徑名表示的目錄中的檔案和目錄的名稱字串陣列
// public File[] listFiles():回傳此抽象路徑名表示的目錄中的檔案和目錄的File物件陣列
File f2 = new File("E:\\itcast");
String[] strArray = f2.list();
for(String str : strArray) {
System.out.println(str);
}
System.out.println("--------");
File[] fileArray = f2.listFiles();
for(File file : fileArray) {
// System.out.println(file);
// System.out.println(file.getName());
if(file.isFile()) {
System.out.println(file.getName());
}
}
}
}
洗掉功能:
| 方法名 | 說明 |
|---|---|
| public boolean delete() | 洗掉由此抽象路徑名表示的檔案或目錄 |
示例代碼 :
public class FileDemo03 {
public static void main(String[] args) throws IOException {
// File f1 = new File("E:\\itcast\\java.txt");
//需求1:在當前模塊目錄下創建java.txt檔案
File f1 = new File("myFile\\java.txt");
// System.out.println(f1.createNewFile());
//需求2:洗掉當前模塊目錄下的java.txt檔案
System.out.println(f1.delete());
System.out.println("--------");
//需求3:在當前模塊目錄下創建itcast目錄
File f2 = new File("myFile\\itcast");
// System.out.println(f2.mkdir());
//需求4:洗掉當前模塊目錄下的itcast目錄
System.out.println(f2.delete());
System.out.println("--------");
//需求5:在當前模塊下創建一個目錄itcast,然后在該目錄下創建一個檔案java.txt
File f3 = new File("myFile\\itcast");
// System.out.println(f3.mkdir());
File f4 = new File("myFile\\itcast\\java.txt");
// System.out.println(f4.createNewFile());
//需求6:洗掉當前模塊下的目錄itcast
System.out.println(f4.delete());
System.out.println(f3.delete());
}
}
(3)、注意事項
絕對路徑和相對路徑的區別:
絕對路徑:完整的路徑名,不需要任何其他資訊就可以定位它所表示的檔案,例如:E:\itcast\java.txt
相對路徑:必須使用取自其他路徑名的資訊進行解釋,例如:myFile\java.txt
二、File類導圖建模
聊File類,肯定避不開IO流,這是一定的,如果你沒有一個系統的概念,會很亂,請看以下:

IO流體系我分幾章分別來介紹,太多了大家看著也難受,

三、遞回
遞回有一種演算法,資料結構的,不懂得建議好好復習以下在這,
1、什么是遞回
所謂遞回,在數學與計算機科學中,是指在函式的定義中使用函式自身的演算法,通俗來說,遞回演算法的實質是把問題分解成規模縮小的同類問題的子問題,然后遞回呼叫方法來表示問題的解,
2、遞回的基本原理
第一,每一級的函式呼叫都有自己的變數,
第二,每一次函式呼叫都會有一次回傳,
第三,遞回函式中,位于遞回呼叫前的陳述句和各級被呼叫函式具有相同的執行順序,
第四,遞回函式中,位于遞回呼叫后的陳述句的執行順序和各個被呼叫函式的順序相反,
第五,雖然每一級遞回都有自己的變數,但是函式代碼并不會得到復制,
3、遞回三大要素
第一要素:明確你這個函式想要干什么,先不管函式里面的代碼什么,而是要先明白,你這個函式的功能是什么,要完成什么樣的一件事,
第二要素:尋找遞回結束條件,我們需要找出當引數為啥時,遞回結束,之后直接把結果回傳,請注意,這個時候我們必須能根據這個引數的值,能夠直接知道函式的結果是什么,
第三要素:找出函式的等價關系式,我們要不斷縮小引數的范圍,縮小之后,我們可以通過一些輔助的變數或者操作,使原函式的結果不變,
四、圖形&代碼理解遞回
1、圖形建模


2、代碼演示
public class Digui {
public static int Zuhe1(int n,int k){
int x=1,y=1,z=1,c;
for(int i=n;i>0;i--){
x=i*x;
}
for(int i=k;i>0;i--){
y=i*y;
}
for(int i=n-k;i>0;i--){
z=i*z;
}
c=x/(y*z);
return c;
}//公式法求
public static int Zuhe2(int n,int k){
int c=1;
for(int i=k;i<n;i++){
c=c*(i+1)/(i-k+1);
}
return c;
}//遞推法求
public static int Zuhe3(int n,int k){
int i=n;
if(n==k){
return 1;
}
else{
return Zuhe3(n-1,k)*n/(n-k);
}
}//遞回法求
public static void main(String args[]) {
int n,k;
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
k=sc.nextInt();
System.out.println(Zuhe1(n,k));
System.out.println(Zuhe2(n,k));
System.out.println(Zuhe3(n,k));
}
}
//運行結果
6
4
15
15
15
五、總結

點個贊吧,評個論吧,收個藏吧......

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/356144.html
標籤:其他
上一篇:作業流審批業務代碼詳解(二)
