0

の方法でフラットファイルから入ってくる一連のフォルダーを作成しようとしています。

X/Y/Z

これらのそれぞれにディレクトリを作成したいと思いますが、再帰の記憶が私を結びつけています。

これが私のコードです。誰かがアドバイスできます。

    public void CreateDirectory(SPFolderCollection oWeb, string folder)
    {
        SPFolder theFolder = oWeb.Add(folder);
        theFolder.Update();
    }

    public void FolderCreator(SPWeb oWeb)
    {
        StreamReader reader = new StreamReader(this.txtFolders.Text);
        while (reader.Peek() != -1)
        {
            string folderLine = reader.ReadLine();
            if (folderLine.Contains("/"))
            {
                SPFolderCollection collection = oWeb.Folders["Documents"].SubFolders[folderLine.Split('/')[0]].SubFolders;
                CreateDirectory(collection, folderLine);
            }
            SPFolderCollection newCollection = oWeb.Folders["Documents"].SubFolders;
            CreateDirectory(newCollection, folderLine);
        }
    }

これは機能しません。再帰を行うために探しているので、合格した場合

ABC/DEF/GHI および ABC/DEF に移動し、適切にフォルダーを作成します。

しかし、私はそれを行う方法として立ち往生しています。

4

1 に答える 1

1

SPFileCollection.Add()メソッドを使用すると、ファイルの絶対相対パスを渡すことができます。したがって、これは、フォルダー構造を生成するだけではないことを前提としたオプションである可能性があります。その場合、一時ファイルを作成してから削除しない限り、これは実際には機能しませんフォルダーパスを保持します。

web.Files.Add("/sites/somesite/shared documents/foldera/folderb/folderc/somefile.txt", stream);
于 2012-06-27T21:28:07.053 に答える