2010-12-21 12 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); 

     } 
    } 
関連する問題