2011-02-07 41 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

相關問題