nodefs遍歷文件夾
『壹』 c#怎麼用代碼新建文件夾和遍歷文件夾
問題一:
using System.IO;
fileStream fs =new fliestream("路徑名",fileMode.create);
streamwriter sw=new streamwriter(fs);
sw.write(content);
sw.close();
fs.close();
問題二:
private void Form1_Load(object sender, EventArgs e)
{
try
{
string[] rootstr = Directory.GetLogicalDrives(); //得到系統的驅動器
foreach (string rootdrive in rootstr)
{
TreeNode tn = new TreeNode(rootdrive);
treeView1.Nodes.Add(tn); //將系統驅動器添加到樹的節點上
ImageList kk = new ImageList();
//kk.Images.Add()
getDinfo(tn); //得到各個驅動器的下一級目錄
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void getDinfo(TreeNode TN)
{
try
{
DirectoryInfo dissub;
if (TN.Nodes.Count == 0) //如果當前樹節點的TreeNode數量為0,說明它還沒有遍歷過,遍歷這個目錄
{
dissub = new DirectoryInfo(TN.FullPath);
foreach (DirectoryInfo di in dissub.GetDirectories())
{
TreeNode tnsub = new TreeNode(di.Name);
TN.Nodes.Add(tnsub);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
『貳』 nodejs怎麼實現ftp遠程目錄的遍歷
不知道支不支持ftp協議啊。要是支持的話直接連接就好了。應該支持。冰晶V8。
『叄』 用 java遍歷hadoop分布式文件系統中某個目錄下的全部文件,我的hadoop是單節點的
原因:
你訪問的是本地文件系統而非hdfs , 因為Configuration默認的是在core-default.xml中的屬性fs.default.name默認值是file:///,表示本地文件系統。在我們new Configuration();時會默認載入core-default.xml文件,所以根據這個文件的fs.default.name值使用了本地文件系統。
解決方法:
一般安裝hadoop時都是修改core-site.xml文件,這個文件設置的屬性值一般使用來覆蓋core-default.xml這個文件的,在core-site.xml文件中會設置fs.default.name值為hadoop的namenode的地址以及埠號,如hdfs://localhost:9000,即表示namenode是本機,也就是為分布式。所以我們在連接hdfs時需要指定連接的地址,也就是hadoop集群中core-site.xml中fs.default.name屬性值。所以解決方法有三種:
1)在代碼Configuration conf=new Configuration();之後手動為Configuration對象設置fs.default.name屬性值,如:conf.set("fs.default.name","hdfs:localhost:9000");
2)在代碼的classpath下創建一個文件,在文件中設置fs.default.name屬性值,再使用conf.addResource("文件路徑")將該文件添加到Configuration中;
3)直接將集群的core-site.xml添加到classpath下即可,無需手動添加到Configuration,在new Configuration時會自動載入該文件
『肆』 在java中如何遍歷某個路徑下的所有文件夾和文件
首先,我們先來遍歷一下D盤根目錄下所有的子文件:public
static
void
fileList()
{
File
file=new
File("d:/");
File[]
files
=
file.listFiles();
if
(files
!=
null)
{
for
(File
f
:
files)
{
System.out.println(f.getPath());
}
}
}對此,我們肯定不滿足,我們需要遍歷D盤下所有的文件和文件夾,而不是根目錄下的文件夾,這個時候我們需要使用到遞歸:public
static
void
fileList(File
file)
{
File[]
files
=
file.listFiles();
if
(files
!=
null)
{
for
(File
f
:
files)
{
System.out.println(f.getPath());
fileList(f);
}
}
}然後在主函數中調用:public
static
void
main(String[]
args)
{
File
file=new
File("d:/");
fileList(file);
}結果是不是能令你滿意呢?顯然,輸出的都是全路徑,我們可以對我們的遞歸函數做如下改進:
public
static
void
fileList(File
file,int
node)
{
node++;
File[]
files
=
file.listFiles();
if
(files
!=
null)
{
for
(File
f
:
files)
{
for(int
i=0;i<node;i++){
if(i==node-1){
System.out.print("├");
}
else{
System.out.print("
");
}
}
System.out.println(f.getName());
fileList(f,node);
}
}
}然後再次在主函數中調用:public
static
void
main(String[]
args)
{
File
file=new
File("d:/");
fileList(file,0);
}得到的結果是一個類似樹狀的結構,如果你對此還不滿意,可以嘗試給JTree上添加節點,可以做到和資源管理器中一樣的結構。
『伍』 請問在swing中 如何根據給出的一個文件夾的目錄把下面的文件全部循環遍歷出來 然後以樹形顯示,高手賜教啊
之前做過一個東西 用到的技術跟你需要的類似 .可以給你參考一下
我用的JTree.耐性看完 應該會對你有幫助
大致說下思路
先准備一個遍歷文件夾的方法 .遞歸這東西,能不用 盡量別用
File file = new File("D:/");這里舉例遍歷D盤
LinkedList<File> dir = new ....;准備一個目錄數組
ArrayList<File> fs = new.....;准備一個文件數組
dir.add(file);
for(File f : dir){
if(f.isDirectory()){//如果是數組 裝進去文件夾數組
dir.add(f)
}else if(f.isFile()){//如果是標准文件 裝進這個數組
fs.add(f);
}
}
大概就這樣遍歷..細節沒過多考慮 手寫沒經過編譯不知道有沒有錯 大致演算法就這樣
fs裡面裝的就是你給定文件夾里所有的標准文件
再來顯示
1.首先,要求給定一個文件夾目錄,顯示在樹上,並可以展開.既然要顯示在樹上,那就必須得是個TreeNode
這有句代碼:
DynamicUtilTreeNode root = new DynamicUtilTreeNode(FileSystemView.getFileSystemView().getHomeDirectory(),new Object[0]);
這句代碼的意思 是獲取到桌面File,並把它轉換成一個DynamicUtilTreeNode.
2.用你給定文件轉換出來的TreeNode 構建一個TreeModel
DefaultTreeModel treeModel = new DefaultTreeModel(root)
root表示你給定文件轉換出來的TreeNode.
3.這下方便了,把fs里和dir里的所有文件 和文件夾轉換成TreeNode 再根據他們的路徑 插入到這棵樹中..用這個方法(是treemodel上的方法 所以要構建一個這個,十分方便)
一個3個參數
treeModel.insertNodeInto(這個參數填TreeNode, tn(這個表示父節點), getTreeNodeChildCount(tn) );//最後這個參數是插入位置,我這樣寫 是插入到末尾
----------------------------------------------------
大概就這樣了.不過一般來說 樹不顯示文件只顯示文件夾(參照windows的資源管理器) 顯示文件的可以用個JList來做 .
希望對你有幫助把 ,我自己也算回顧了下以前寫的東西...
『陸』 nodejs 如何快速的遍歷大量的文件夾
CORS規格書號只需要OPTIONS調用先於POST或GET如果POST或GET有任何非簡單內容或標題在裡面。 參見「預檢請求」
2. 嘗試將控制傳遞給下一個匹配的路由。如果快遞是優先個匹配app.get路線,那麼它不會繼續到選擇路線,除非你做(未來的)這樣的:
app.get('somethingelse', function(req, res, next) {
//..set headers etc.
next();
});
在條款CORS的東西,我把它放在一個中間件是運作良好
//CORS middleware
var allowCrossDomain = function(req, res, next) {
res.header('Access-Control-Allow-Origin', config.allowedDomains);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
}
//...
app.configure(function() {
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.swww.hbbz08.com ession({ secret: 'cool beans' }));
app.use(express.methodOverride());
app.use(allowCrossDomain);
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
3. 留在路由的想法。這段代碼:
app.all('/*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
4. 我已經適合明示或連接中間件。它支持OPTIONS要求預檢檢查。請注意,它將使CORS訪問任何東西,你可能要在支票放 CodeGo.net,如果你想限制接取。
app.use(function(req, res, next) {
var oneof = false;
if(req.headers.origin) {
res.header('Access-Control-Allow-Origin', req.headers.origin);
oneof = true;
}
if(req.headers['access-control-request-method']) {
res.header('Access-Control-Allow-Methods', req.headers['access-control-request-method']);
oneof = true;
}
if(req.headers['access-control-request-headers']) {
『柒』 為什麼我在c#中遍歷文件夾是會出現兩次以上的重復文件
不是出現重復的文件,是截取字元串錯了
改成:string str = f.Name.Substring(f.Name.LastIndexOf('\\') + 1, f.Name.LastIndexOf('.'));
『捌』 Node.JS循環刪除非空文件夾及子目錄下的所有文件
最近要實現一個循環文件夾的功能,文件夾可能不是空的,還可能帶有子文件夾和文件,網上找了一些現有的庫,但是都不提供刪除進度。所以就自己寫了一個。
var
fs
=
require('fs')
var
path
=
require('path')
var
remove
=
function(tarPath,
cb,
removeStates)
{
if
(!removeStates)
{
removeStates
=
{
cur:
0,
all:
0
}
}
else
{
if
(!removeStates.cur)
{
removeStates.cur
=
0;
}
if
(!removeStates.all)
{
removeStates.all
=
0;
}
}
removeStates.all++;
fs.stat(tarPath,
function(err,
states)
{
removeStates.cur++;
if
(err)
{
cb
&&
cb()
return
}
if
(states.isDirectory())
{
fs.readdir(tarPath,
function(err,
files)
{
if
(err)
{
console.log(err)
cb
&&
cb()
return
}
if
(files.length
<
1)
{
fs.rmdir(tarPath,
cb)
return
}
var
count
=
0
var
checkEnd
=
function()
{
if
(++count
==
files.length)
{
fs.rmdir(tarPath,
cb)
}
}
files.forEach(function(file)
{
remove(path.join(tarPath,
file),
checkEnd,
removeStates)
})
})
}
else
{
fs.unlink(tarPath,
function(err)
{
if
(err)
{
console.log(err)
}
cb
&&
cb()
return
})
}
})
return
removeStates
}
使用很簡單
var
states
=
remove('./testdir',
function()
{
console.log('delete
complete')
clearInterval(checkTimer)
});
var
checkTimer
=
setInterval(function()
{
console.log(states)
},
500);
輸出結果:
node
remove.js
{
cur:
546,
all:
546
}
delete
complete
PS:下面看下NodeJs遞歸刪除非空文件夾
此文由於第一次使用fs.unlink()刪除文件夾時報「Error:
EPERM:
operation
not
permitted,
unlink」錯誤而寫,這是因為fs.unlink()只能刪除文件。
fs.rmdir()或fs.rmdirSync()用戶刪除空文件夾,
fs.unlink()或fs.unlinkSync()用於刪除文件,因此刪除非空文件夾需要使用遞歸方式。
function
deleteFolderRecursive(path)
{
if(
fs.existsSync(path)
)
{
fs.readdirSync(path).forEach(function(file)
{
var
curPath
=
path
+
"/"
+
file;
if(fs.statSync(curPath).isDirectory())
{
//
recurse
deleteFolderRecursive(curPath);
}
else
{
//
delete
file
fs.unlinkSync(curPath);
}
});
fs.rmdirSync(path);
}
};
總結
以上所述是小編給大家介紹的Node.JS循環刪除非空文件夾及子目錄下的所有文件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!