2010-12-21 3 views

답변

1

탐색기 모드에서 문서 라이브러리 열기 한 위치에서 복사 한 탐색기보기에서 다른 라이브러리를 엽니 다.

+0

모든 문서 기록이 손실됩니다 아니, 그렇게 할 때? 어떻게 보관할 수 있습니까? – Marc

1

일반적인 방식으로 프로그래밍 방식으로 수행해야하는 경우 폴더 (또는 전체 문서 라이브러리)의 내용을 파일 시스템에 쓰는 기능과 다른 기능으로 다시 가져 오는 기능을 사용할 수 있습니다 도서관. 내보낼

:

void ExtractFolder(SPFolder spFolder, String systemFolder) 
{ 
    String destinationFolder = Path.Combine(systemFolder, spFolder.Name); 

    Directory.CreateDirectory(destinationFolder); 

    foreach (SPFile file in spFolder.Files) 
    { 
     String fileLocation = Path.Combine(destinationFolder, file.Name); 
     byte[] binaryFile = file.OpenBinary(); 

     using (FileStream fs = new FileStream(fileLocation, FileMode.OpenOrCreate, FileAccess.Write)) 
      { 
        fs.Write(binaryFile, 0, binaryFile.Length); 
        fs.Close(); 
      } 
     } 
     foreach (SPFolder subfolder in spFolder.SubFolders) 
     { 
      ExtractFolder(subfolder, destinationFolder); 
     } 
    } 

가져 오려면

void ImportListFromFolder(SPFolder spFolder, String systemFolder) 
{ 
    ImportFilesToFolder(spFolder, systemFolder); 

    DirectoryInfo directoryInfo = new DirectoryInfo(systemFolder); 

    foreach (DirectoryInfo subDirectory in directoryInfo.GetDirectories()) 
    { 
     SPFolder subfolder = spFolder.SubFolders.Add(subDirectory.Name); 
     ImportListFromFolder(subfolder, subDirectory.FullName); 
    } 
} 

void ImportFilesToFolder(SPFolder spFolder, string systemFolder) 
{ 
    String fileMask = "*.*"; 

    DirectoryInfo directoryInfo = new DirectoryInfo(systemFolder); 

    foreach (FileInfo fileInfo in directoryInfo.GetFiles(fileMask)) 
    { 
      byte[] buffer = new byte[fileInfo.Length]; 
      using (FileStream fs = new FileStream(fileInfo.FullName, System.IO.FileMode.Open)) 
      { 
       fs.Read(buffer, 0, (int)fileInfo.Length); 
       fs.Close(); 
      } 

      SPFile addedFile = spFolder.Files.Add(fileInfo.Name, buffer, false); 

     } 
    } 
관련 문제