SharePointでDocument Libraryドキュメントライブラリデータをローカルにバックアップ
5421 ワード
1.SharePointのSiteとRootWeb、およびドキュメントライブラリを取得し、指定したディレクトリファイルの下にフォルダを作成します.
2.まず、ドキュメントライブラリの下の階層1のサブフォルダとサブファイルを巡回します.ここではFormsという隠しファイルをフィルタしてから、すべてのサブフォルダとサブファイルを反復して巡回します.また、大きなファイルのバックアップも考慮する必要があります(フォルダとファイルが存在するかどうかを判断するには、判定と処理が行われています).
3.その他に、いくつかの异常な処理が必要で、ここはプラスしていないで、自分で使う时プラスすることができます.以上は個人がSharePointを独学し始めたばかりで、少し分かりやすい理解で、討論と指導を歓迎します.
#region
///
/// SiteUrL Shared Documents
///
/// SiteUrl
///
public void CreateDirectoryTree(string siteUrl, string destinationPath)
{
using (SPSite mySite = new SPSite(siteUrl))
{
using (SPWeb myWeb = mySite.RootWeb)
{
string tempDirectory = destinationPath;
SPList myList = myWeb.Lists["Documents"];
//
SPFolder myFolder = myList.RootFolder;
DirectoryInfo myDirectory = new DirectoryInfo(tempDirectory);
if (myDirectory.Exists)
{
tempDirectory += "\\" + "Web";
if (!Directory.Exists(tempDirectory))
{
myDirectory.CreateSubdirectory("Web");
}
tempDirectory += "\\" + "Library";
if (!Directory.Exists(tempDirectory))
{
Directory.CreateDirectory(tempDirectory);
}
tempDirectory += "\\" + myFolder.Name.ToString();
if (!Directory.Exists(tempDirectory))
{
Directory.CreateDirectory(tempDirectory);
}
CreateSubDirectory(myFolder, tempDirectory);
}
// Console.WriteLine(myFolder.Name);
}
}
}
#endregion
2.まず、ドキュメントライブラリの下の階層1のサブフォルダとサブファイルを巡回します.ここではFormsという隠しファイルをフィルタしてから、すべてのサブフォルダとサブファイルを反復して巡回します.また、大きなファイルのバックアップも考慮する必要があります(フォルダとファイルが存在するかどうかを判断するには、判定と処理が行われています).
///
///
///
/// ,
///
public void CreateSubDirectory(SPFolder myFolder, string destinationPath)
{
SPList myList = myFolder.DocumentLibrary;
int myListLength = myList.Items.Count;
SPListItem myListItem = myList.Items[0];
string tempPath = destinationPath;
SPFolderCollection myFolderCollection = myFolder.SubFolders;
SPFileCollection myFileCollection = myFolder.Files;
int subFolderLength = myFolderCollection.Count;
int subFileLength = myFileCollection.Count;
if (subFolderLength > 0 || subFileLength > 0)
{
if (subFolderLength > 0)
{
for (int i = 0; i < subFolderLength; i++)
{
if (myFolderCollection[i].Name != "Forms")
{
tempPath += "\\" + myFolderCollection[i].Name;
if (!Directory.Exists(tempPath))
{
Directory.CreateDirectory(tempPath);
}
CreateSubDirectory(myFolderCollection[i], tempPath);
}
}
}
foreach (SPFile item in myFileCollection)
{
DirectoryInfo myDirectoryInfo = new DirectoryInfo(destinationPath);
string tempFilePath = destinationPath;
tempFilePath += "\\" + item.Name;
if (File.Exists(tempFilePath))
{
File.Delete(tempFilePath);
}
using (FileStream myFileStream = new FileStream(tempFilePath, FileMode.Create, FileAccess.Write))
{
const int bufferSize = 4 * 1024 * 1024;
//byte[] fileContentBuffer = new byte[bufferSize];
byte[] fileContent = item.OpenBinary();
int num = fileContent.Length / bufferSize;
int data = fileContent.Length % bufferSize;
int start = 0;
while (start < num)
{
myFileStream.Write(fileContent, start * bufferSize, bufferSize);
start++;
}
myFileStream.Write(fileContent, start * bufferSize, data);
}
for (int a = 0; a < myListLength; a++)
{
if (myList.Items[a].Name == item.Name)
{
myListItem = myList.Items[a];
break;
}
}
myListItem["Source Path"] = tempFilePath;
myListItem.Update();
tempFilePath = destinationPath;
}
}
}
3.その他に、いくつかの异常な処理が必要で、ここはプラスしていないで、自分で使う时プラスすることができます.以上は個人がSharePointを独学し始めたばかりで、少し分かりやすい理解で、討論と指導を歓迎します.