2011-02-07 70 views
2

我需要创建一个简单的程序,它经过在SharePoint用户给定的目录,发现所有这些都超过1月份的文件夹,然后将它们复制到一些本地硬盘驱动器。 也许它会创建一些日志的方式,此文件夹被移到.......从SharePoint复制文件夹的修改日期

感谢 的Jakub

+0

嗨,这是SharePoint 2007中,使用Windows authetication我没有什么:)我觉得来访问SharePoint是没有问题的,我需要找到旧的文件夹。我相信,复制它们是最简单的部分,但如果你能帮助我完成这件事,我将不胜感激。 – 2011-02-07 10:59:38

回答

3

我写的,你可以用它来了解它是如何做此示例代码,或者你可以使用它,因为它似乎工作正常。

class Program 
{ 
    static void Main(string[] args) 
    { 
     MoveFolders("your_web_url", "your_doclib_url"); 
    } 

    public static void MoveFolders(string webUrl, string listUrl) 
    { 
     using (SPSite site = new SPSite(webUrl)) 
     { 
      using (SPWeb web = site.OpenWeb()) 
      { 
       SPList targetList = web.GetList(web.Url + "/" + listUrl); 
       MoveFolders(targetList.RootFolder, @"C:\test"); // path to your local storage folder 
      } 
     } 
    } 

    public static void MoveFolders(SPFolder targetFolder, string rootLocalPath) 
    { 
     string currentPath = Path.Combine(rootLocalPath, targetFolder.Name); 
     if (!Directory.Exists(currentPath)) 
      Directory.CreateDirectory(currentPath); 
     DateTime lastModified = (DateTime)targetFolder.Properties["vti_timelastmodified"]; //folder last modified date 
     if (lastModified < DateTime.Today.AddMonths(-1)) 
      SaveFolderLocal(targetFolder, currentPath); 
     foreach (SPFolder folder in targetFolder.SubFolders) 
     { 
      MoveFolders(folder, currentPath); 
     } 
    } 

    public static void SaveFolderLocal(SPFolder folder, string localStoragePath) 
    { 
     foreach (SPFile file in folder.Files) 
     { 
      var contents = file.OpenBinary(); 
      using (FileStream fileStream = new FileStream(Path.Combine(localStoragePath, file.Name), FileMode.Create)) 
      { 
       fileStream.Write(contents, 0, contents.Length); 
      } 
     } 
    } 
} 

此代码将在本地保存您的doclib文件夹结构,其中包含修改超过一个月前任何文件夹的内容。只需要小心使用递归MoveFolders方法,因为它可能会导致具有非常复杂的文件夹结构的库的StackOverflowException。

+0

谢谢你。对不起,在这个新手,但我不知道如何使它的工作方式,用户点击一个按钮,它会为他做的工作,如所述?另外,我不确定什么是“your_web_url”和“your_doclib_url”。遗憾的是这样一个新手,但我想不会是... – 2011-02-07 12:33:00

相关问题