一.遞歸方法
1.遞歸就是自己調(diào)用本身的方法,前提是有方法。
2.遞歸使用
找出遞歸的規(guī)律
遞歸要有出口條件,也就是結(jié)束條件
3.注意事項(xiàng)
遞歸次數(shù)不能太多,否則會(huì)出現(xiàn)堆棧溢出現(xiàn)象
遞歸不能嵌套使用,否則出現(xiàn)死遞歸
二.IO介紹
1. i為Input輸入,O為Output輸出,API單獨(dú)把輸入和輸出流封裝成一個(gè)類,提供大量的方法供我們使用。
2. IO技術(shù)可以把數(shù)據(jù)寫(xiě)入到持久化設(shè)備(包括硬盤(pán)、光盤(pán)、U盤(pán)等),集合、數(shù)組雖然可以存儲(chǔ)讀取,但是僅僅暫存在內(nèi)存中,當(dāng)重新啟動(dòng)程序就不存在了。
3. 相對(duì)內(nèi)存這個(gè)參照物而言,把硬盤(pán)的東西讀到內(nèi)存中,稱為輸入流。把內(nèi)存的數(shù)據(jù)寫(xiě)入到硬盤(pán)上,稱為輸出流。
三.代碼實(shí)現(xiàn)電腦搜索的功能
1.搜索自定義后綴名的文件夾
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package cn.jasonFile01; import java.io.File; /** * @author Jason * @2016年9月18日 下午9:12:35 */ public class FindFiles04 { // 成員變量的巧用 // 統(tǒng)計(jì)變量可以放在成員位置 static int countFile = 0 ; public static void main(String[] args) { // 封裝父類的file對(duì)象 File parent = new File( "F:\\API" ); // 定義要查找文件的后綴名 String suffix = ".pdf" ; // 調(diào)用查找文件的方法 scanFiles(parent, suffix); // 輸出滿足條件的文件個(gè)數(shù) System.out.println( "滿足條件的文件有" + countFile + "個(gè)" ); } /** * 這是查找符合條件的文件 * 1. 獲取當(dāng)前目錄下的所有子文件及其子目錄 * 2. 遍歷數(shù)組判斷是否是文件 * 是:在滿足后綴名的情況下,直接輸出文件所在的絕對(duì)路徑,計(jì)數(shù)器加1 * 否:接著遞歸 * 注意:如果是文件(不是目錄)調(diào)用listFiles方法的話,那么返回的是null */ private static void scanFiles(File parent, String suffix) { // 獲取當(dāng)前目錄下的所有子文件及其子目錄 File[] files = parent.listFiles(); // 防止系統(tǒng)中沒(méi)有訪問(wèn)權(quán)的文件返回null值 if (files != null ) for (File file : files) { if (file.isFile() && file.getName().endsWith(suffix)) { System.out.println(file.getAbsolutePath()); countFile++; } else scanFiles(file, suffix); } } } |
2.搜索自定義后綴名的文件夾
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
package cn.jasonFile01; import java.io.File; /** * @author Jason * @2016年9月18日 下午9:12:20 */ public class FindFolder { // 定義統(tǒng)計(jì)變量 static int countFolder = 0 ; public static void main(String[] args) { // 封裝父類的file對(duì)象 File parent = new File( "F:\\a" ); // 定義要查找文件的后綴名 String suffix = "1" ; // 調(diào)用查找文件夾方法 scanFolder(parent, suffix); // 輸出滿足條件的目錄個(gè)數(shù) System.out.println( "滿足條件的文件夾有" + countFolder + "個(gè)" ); } /** * 這是查找滿足條件的文件夾個(gè)數(shù)的方法 * 1. 獲取當(dāng)前目錄下的所有子文件及其子目錄 * 2. 遍歷數(shù)組判斷是否為目錄 * 是:接著遞歸 * 否:不管它 * 3. 后綴名相同輸出絕對(duì)路徑 * 注意:如果是文件(不是目錄)調(diào)用listFiles方法的話,那么返回的是null */ private static void scanFolder(File parent, String suffix) { // 獲取父目錄下的所有子目錄及子文件 File[] files = parent.listFiles(); if (files != null ) // 遍歷數(shù)組進(jìn)行判斷 for (File file : files) { if (file.isDirectory()) scanFolder(file, suffix); } //免租條件的目錄輸出 if (parent.getName().endsWith(suffix)) { System.out.println(parent.getAbsolutePath()); countFolder++; } } } |
四.代碼實(shí)現(xiàn)電腦的徹底刪除功能
注意:Java中刪除不走回收站,請(qǐng)慎重使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package cn.jasonFile01; import java.io.File; public class ClearAll { public static void main(String[] args) { // 封裝父目錄為file對(duì)象 File parent = new File( "F:\\IO修改文件名" ); //調(diào)用刪除方法 clearAll(parent); } /** * 這是刪除父目錄下的所有子目錄和子文件的方法 * 1.獲取父目錄下的所有子文件及子目錄 * 2.變量數(shù)組并進(jìn)行判斷是否是文件 * 是:刪除 * 否:進(jìn)行遞歸 * 3.直到把目錄下的子文件到刪除完畢,那么在刪除所在的空文件 */ private static void clearAll(File parent) { // 獲取父目錄下的所有子文件及子目錄 File[] files = parent.listFiles(); //1.防止系統(tǒng)文件不能方位而出現(xiàn)空指針異常 //2.防止系統(tǒng)路徑不存在導(dǎo)致數(shù)組為null,發(fā)生空指針異常 if (files != null ) // 遍歷數(shù)組 for (File file : files) { if (file.isFile()) file.delete(); else clearAll(file); } // 刪除文件后在刪除空文件夾 parent.delete(); } } |
以上就是小編為大家?guī)?lái)的java IO實(shí)現(xiàn)電腦搜索、刪除功能的實(shí)例全部?jī)?nèi)容了,希望大家多多支持服務(wù)器之家~