遞迴及檔案 目錄操作記錄

2022-08-01 23:12:18 字數 1396 閱讀 4961

應作業要求,寫了乙個遞迴資料夾

列出某資料夾下的所有檔案及子檔案

資料夾結構如下:

《》代表資料夾

<>代表檔案

資料夾:

《1120》下有:《a》《b》<11.txt>

《1120>a》下有:《ccc》<1.txt>

《1120>b》是空資料夾

《1120>a>ccc》是空資料夾

**如下:

function see($path)else

echo "";

closedir($dh);//2、忘記了關閉檔案控制代碼

}see('../1120');

//出現的問題:

1、判斷資料夾時,出現了2層後的資料夾沒能正確判斷

解決方法:

原判斷為if(is_dir($filename)){},當檔案到第二層時(如上資料夾1120>a>ccc)就無法判斷ccc是乙個資料夾了,

原因:$filename是資料夾的名稱,不帶路徑!當首層資料夾裡找不到,就只能返回false了!

所以,改為if(is_dir($path.'/'.$filename)){}就可,當然,遞迴時也需要將引數寫為$path.'/'..$filename

2、忘記了關閉檔案控制代碼!(後來看老師及y友寫的程式時,才發覺這個大問題)

3、以上函式的目錄層次不夠分明!

而自己也就最後的層次問題除錯了好久幾個小時,包括加入第二個引數$level(後來,看了老師的做法,沒想到竟然與之相同,只是我最後也沒能做出效果出來)

而別乙個y友用了";

$mydir->close();

}//start the program

echo "";

tree('./');

總結:程式的邏輯上我已經完成了!只是在顯示結果這一塊做的不夠好!

在邏輯上,與老師的有很大的不同!

老師的是先為.及..判斷及跳過,再執行檔案顯示操作,最後判斷是否為目錄!

而我的則是,先判斷是否為目錄,是目錄了再判斷是否不為.及..(想了想,我這樣的判斷!結構不夠明了,邏輯上也不容易理解,在執行時,程式也不夠健壯、優化!比y友的還差一些!至少,人家是一步判斷完畢!)

//所以,以後,在程式邏輯判斷上,要先做排除!按以下邏輯順序來處理:

1、某狀態下無需要操作的先做判斷,》語句

2、當前要操作的,》語句

3、某狀態下需要做的操作,》語句

顯然,自己還是有很多的欠缺,以後,要多看別人的程式!多去了解別人的做法,解法!

不然,又會像今天這樣寫一大堆無用的**!浪費時間!

檔案許可權及目錄操作

檔案擁有者 群組概念 賬號密碼群組資訊 預設情況下,所有系統上的賬號與一般賬號,及root相關資訊,都記錄在 etc passwd。個人密碼記錄在 etc shadow 所有組名記錄在 etc group root bys more etc fstab label ext3 defaults 1 1...

Perl檔案及目錄操作

大多數程式都不是孤立的,它們與它們的環境相互作用。很多的程式也需要通過檔案操作實現資料的存貯和交換。檔案控制代碼 file handle 是perl程式中為程式和外部世界提供i o連線的名稱。建議全部使用大寫字母以示與變數等的區別。特別地,也可以將tdin stdout stderr也認為是perl...

(二)目錄及檔案操作

命令 ls 選項 目錄 檔案 功能 對於目錄,該命令列出該目錄下的所有子目錄與檔案。對於檔案,將列出檔名及其他資訊。linux檔案系統不是根據字尾名來執行檔案的,而是根據檔案是否有可執行許可權。常用的選項 選項功能 a顯示指定目錄下所有子目錄與檔案。ls a root home l列出指定目錄下所有...