為了避免目錄列舉消耗時(shí)間過長(zhǎng),請(qǐng)指定一個(gè)目錄來模擬,命令行參數(shù):代表路徑的字符串.

創(chuàng)新互聯(lián)是一家專業(yè)從事網(wǎng)站制作、做網(wǎng)站的網(wǎng)絡(luò)公司。作為專業(yè)網(wǎng)站設(shè)計(jì)公司,創(chuàng)新互聯(lián)依托的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!
如果認(rèn)可代碼,請(qǐng)加分50,謝謝
----
import javax.swing.*;
import javax.swing.tree.*;
import java.awt.*;
import java.io.*;
final public class FileTree extends JFrame {
public FileTree(File dir) throws HeadlessException {
super("File Tree");
JTree tree;
add(new JScrollPane(tree =new JTree(buildTreeModel(dir))));
tree.setCellRenderer(new FileTreeRenderer());
setSize(400,600);
setVisible(true);
}
private TreeModel buildTreeModel(File dir){
DefaultMutableTreeNode root = new DefaultMutableTreeNode(dir);
walkthrough(dir,root);
return new DefaultTreeModel(root);
}
private static void walkthrough(File f,DefaultMutableTreeNode node){
for (File fle : f.listFiles()) {
DefaultMutableTreeNode n = new DefaultMutableTreeNode(fle);
node.add(n);
if (fle.isDirectory()){
walkthrough(fle, n);
}
}
}
private class FileTreeRenderer extends DefaultTreeCellRenderer {
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
JLabel cmp = (JLabel)super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
if (value instanceof DefaultMutableTreeNode) {
DefaultMutableTreeNode n = (DefaultMutableTreeNode)value;
Object obj = n.getUserObject();
if (obj instanceof File) {
File f = (File)obj;
cmp.setText(f.getName());
cmp.setForeground(f.isDirectory()?Color.BLUE:Color.BLACK);
}
}
return cmp;
}
}
public static void main(String[] args) {
new FileTree(new File(args[0]));
}
}
寫一個(gè)函數(shù),函數(shù)的參數(shù)是目錄路徑字符串
函數(shù)內(nèi)使用 ls -s dir_path , 然后for 遍歷循環(huán)
如果是目錄則繼續(xù)調(diào)用自身
如果是文件則答應(yīng)文件名
從執(zhí)行優(yōu)化的角度來講,可以把判斷目錄還是文件的代碼放在循環(huán)外層.
好久沒寫shell了 ,我這也沒環(huán)境測(cè)試 , 只能給個(gè)思路,函數(shù)的具體寫法自己找一下資料吧.
另外,find命令可以直接完成你要做的事.
#!/bin/bash
((?$#??1?))??echo?"param?is?zero!"??exit?1
[?!?-d?$1?]??echo?"$1?not?path"??exit?1
dir=$1
dir_p="$dir?Directory?:"
cd?$dir
dir=`pwd`
for?i?in?`ls?$dir`
do
if?[?-d?$i?];?then
/tmp/sh/dir_file?$i????????????#我的腳本文件在/tmp/sh中,需要改一下這里
else
dir_p="$dir_p?File?$i"
fi
done
cd?..
echo?$dir_p
實(shí)驗(yàn)結(jié)果:
[root@localhost sh]# ./dir_file /tmp/python/
python_2 Directory : File 1.log File 2.log
python_3 Directory : File 3.log
/tmp/python/ Directory : File p File t.py File y.py
這樣應(yīng)該可以吧,試試看
你可以參考如下實(shí)例代碼:function?getFile(file_name)?
local?f?=?assert(io.open(file_name,?'r'))
local?string?=?f:read("*all")
f:close()
return?string
end?function?writeFile(file_name,string)
local?f?=?assert(io.open(file_name,?'w'))
f:write(string)
f:close()
end?--從命令行獲取參數(shù),?如果有參數(shù)則遍歷指定目錄,沒有參數(shù)遍歷當(dāng)前目錄?if?arg[1]?~=?nil?then
cmd?=?"ls?"..arg[1]
else
cmd?=?"ls"?end?print("cmd",?cmd)
--io.popen?返回的是一個(gè)FILE,跟c里面的popen一樣?local?s?=?io.popen(cmd)
local?fileLists?=?s:read("*all")
print(fileLists)
while?true?do?--從文件列表里一行一行的獲取文件名?_,end_pos,?line?=?string.find(fileLists,?"([^\n\r]+.txt)",?start_pos)
if?not?end_pos?then?break?end?--????print?("wld",?line)?local?str?=?getFile(line)
--把每一行的末尾?1,?替換為?0,?local?new?=string.gsub(str,?"1,\n",?"0,\n");
--替換后的字符串寫入到文件。以前的內(nèi)容會(huì)清空?????writeFile(line,?new)
start_pos?=?end_pos?+?1?end
新聞名稱:linux遍歷文件夾命令 linux 遍歷文件夾
文章起源:http://www.yijiale78.com/article12/ddjgjgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、品牌網(wǎng)站建設(shè)、服務(wù)器托管、品牌網(wǎng)站設(shè)計(jì)、商城網(wǎng)站、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)