應作業要求,寫了乙個遞迴資料夾
列出某資料夾下的所有檔案及子檔案
資料夾結構如下:
《》代表資料夾<>代表檔案
資料夾:**如下:《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層後的資料夾沒能正確判斷
解決方法:2、忘記了關閉檔案控制代碼!(後來看老師及y友寫的程式時,才發覺這個大問題)原判斷為if(is_dir($filename)){},當檔案到第二層時(如上資料夾1120>a>ccc)就無法判斷ccc是乙個資料夾了,
原因:$filename是資料夾的名稱,不帶路徑!當首層資料夾裡找不到,就只能返回false了!
所以,改為if(is_dir($path.'/'.$filename)){}就可,當然,遞迴時也需要將引數寫為$path.'/'..$filename
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列出指定目錄下所有...