文件深层递归

public SPFolderModel GetDocumentInfo(string folderPath)
{
var rootFolder = new SPFolderModel();
rootFolder = GetFileAndFolderInfo(folderPath);
foreach (var folder in rootFolder.SubFolders)
{
var subfolder = GetFileAndFolderInfo(folderPath + "\\" + folder.Name);
folder.SubFolders = subfolder.SubFolders;
folder.Files = subfolder.Files;
}
return rootFolder;
}

public SPFolderModel GetFileAndFolderInfo(string folderPath)
{
var folderModel = new SPFolderModel();
Folder docLib = _website.GetFolderByServerRelativeUrl(folderPath);
_clientContext.Load(docLib);
_clientContext.Load(docLib.Files);
_clientContext.Load(docLib.Folders);
var folders = new List<SPFolderModel>();
try
{
_clientContext.ExecuteQuery();
folderModel.Files = GetFiles(folderPath,docLib);
foreach (var folder in docLib.Folders)
{
folders.Add(new SPFolderModel()
{
Name = folder.Name,
FolderPath = folderPath
});
}
folderModel.SubFolders = folders;
}
catch (Exception ex)
{
throw ex;
}
return folderModel;
}
private List<SPFileModel> GetFiles(string folderPath,Folder docLib)
{
var resFiles = new List<SPFileModel>();
if (docLib.Files.Count > 0)
{
foreach (var file in docLib.Files)
{
var url = Config.TargetFileUrl + folderPath+"\\"+file.Name;
//var id = file.ContentTag.Substring(0, file.ContentTag.IndexOf(","));
//url = string.Format(url, id, file.Name);
resFiles.Add(new SPFileModel()
{
Name = file.Name,
Url = url,
FolderPath = folderPath,
LastModifiedTime = file.TimeLastModified,
Size = Convert.ToInt64((file.Length) / 1024)
});
}
}
return resFiles;
}

------------------------------------------------------------------------------------------------

public List<SPFileModel> GetAllFiles(SPFolderModel spFolder)
{
var resFiles = new List<SPFileModel>();
GetFilesByFolderDeep(ref resFiles, spFolder);
return resFiles;
}

public List<SPFileModel> GetFilesByFolderDeep(ref List<SPFileModel> resFiles, SPFolderModel spFolder)
{
List<SPFileModel> files = new List<SPFileModel>();
if (spFolder.Files.Count > 0)
{
resFiles.AddRange(spFolder.Files);
}
if (spFolder.SubFolders.Count > 0)
{
foreach (var subFolder in spFolder.SubFolders)
{
var subFolderFiles = new List<SPFileModel>();
GetFilesByFolderDeep(ref subFolderFiles, subFolder);
resFiles.AddRange(subFolderFiles);
}
}
return files;
}

时间: 2024-11-04 14:24:48

文件深层递归的相关文章

Java扫描指定文件路径下的文件并且递归扫描其子目录下的所有文件

本文主要实现了扫描指定文件路径下的文件,递归扫描其子目录下的所有文件信息,示例文件为: 要求将后缀为.dat的文件夹信息也写入到数据库中,然后将.chk文件解析,将文件中对应的内容读出来写入到数据库,对应类为ChkFileParseFactroy,本文文件发现代码为: 1 package com.src.service.impl; 2 3 import java.io.File; 4 import java.net.InetAddress; 5 import java.net.NetworkIn

C# IO操作(五)文件的递归加载

本篇是一个案例,其核心通过代码展示代码中的递归这个用法,程序的界面如下: 当点击“加载”按钮时,根据路径中的地址,加载该文件夹下所有的子文件夹和子文件,代码如下: 1 private void BtnLoad_Click(object sender, EventArgs e) 2 { 3 string sPath = txtPath.Text.Trim(); 4 LoadDirAndFile(sPath, tvList.Nodes); 5 } 6 7 private void LoadDirAn

java中获取所有文件--(递归调用)

import java.io.File;import java.io.*; //获取一个文件夹中的所有的文件.  /*    打印要求:      -- a.txt   -- IO.doc      -- ~$IO.doc   -- 代码   -- --.metadata   -- --Day18   --视频   -- --01 线程通信.wmv   -- --02 守护线程和join方法.wmv   -- --03 Filed的创建.wmv   -- --04 File的常用方法.wmv  

java扫描文件夹下面的所有文件(递归与非递归实现)

java中扫描指定文件夹下面的所有文件扫描一个文件夹下面的所有文件,因为文件夹的层数没有限制可能多达几十层几百层,通常会采用两种方式来遍历指定文件夹下面的所有文件.递归方式非递归方式(采用队列或者栈实现)下面我就给出两种方式的实现代码,包括了递归与非递归实现,code如下所示. package q.test.filescanner; import java.io.File;import java.util.ArrayList;import java.util.LinkedList; import

Java删除文件夹--递归

对于文件操作实际上查看下JDK的File类的相关API即可,对于文件夹的删除主要是一个递归,参考代码如下: 01.public void delFolder(String filePath) { 02. 03. File folder = new File(filePath); 04. if(!folder.isDirectory()){ 05. folder.delete(); 06. }else if(folder.isDirectory()){ 07. String [] filelist

批量改名媒体文件(递归实现)

写了个一方法,方便统一批量修改电视剧文件名: MediaFileUtils: package net.deniro.utils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import java.io.File; import java.util.Arrays; import java.util.List; import java.util.regex.Matcher; import j

扫描sdcard文件(递归)

private void saoMiaoSdCard() { // TODO Auto-generated method stub // 判断是否挂载 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { // 获取sdcard File sdcard = Environment.getExternalStorageDirectory(); // 创建集合对象 list_file = new

php生成文件夹(递归生成)

function Mk_Folder($Folder){ if(!is_readable($Folder)){ Mk_Folder( dirname($Folder) ); if(!is_file($Folder)) mkdir($Folder,0777); } } php递归生成文件夹

Java文件操作---递归遍历文件目录

在读取文件降序输出单词及其个数的基础上,将txt文件存入文件夹中,开始递归遍历文件目录,之后输出txt文件中的单词及其个数,仍然是降序排列. 代码如下 1 import java.io.BufferedReader; 2 import java.io.File; 3 import java.io.FileReader; 4 import java.util.Map; 5 import java.util.Map.Entry; 6 import java.util.ArrayList; 7 imp