Используя Microsoft API Graph, я переношу папки и файлы в OneDrive. Но у меня есть следующая проблема:
StartPath ist: C: \ Desktop \ Something \
Мои пути выглядят примерно так:
C: \ Desktop \ Something \ Test
C: \ Desktop \ Something \ Test \ Something
C: \ Desktop \ Something \ Test \ Something1
C: \ Desktop \ Something \ Test \ Something \ Nothing
C: \ Desktop \ Something \ Test \ Something \ Nothing2
C: \ Desktop \ Something \ Test2
C: \ Desktop \ Something \ Test2 \ Something
C: \ Desktop \ Something \ Test2 \ Something \ vtzf
В каждой папке есть файлы.
Когда я сохраняю первую папку (C: \ Desktop \ Keyboard \ Test), она должна находиться в каталоге root, потому что это папка 1.
var folderToOneDrive = await graphServiceClient.Users[user.Id].Drive.Items.Request().AddAsync(driveFolder);
FolderId = folderToOneDrive.Id;
Если я сейчас сохраню папку, я получу идентификатор этой папки.
С этим идентификатором я теперь могу сохранить следующую папку (C: \ Desktop \ Something \ Test \ Something)
var folderToOneDrive = await graphServiceClient.Users[user.Id].Drive.Items[FolderId].Children.Request().AddAsync(driveFolder);
FolderId = folderToOneDrive.Id;
Проблема теперь в том, что мне нужно установить нулевой FolderId (локальная строка), когда я вернусь в root, иначе у FolderID всегда должен быть идентификатор из последней папки .
Мой метод:
static async void Execute(GraphServiceClient graphClien, User user, string sDir)
{
try
{
foreach (string d in System.IO.Directory.GetDirectories(sDir))
{
string folderName = new DirectoryInfo(d).Name;
await WriteFolderToOneDrive(graphClien, user, folderName);
foreach (string f in System.IO.Directory.GetFiles(d))
{
using (FileStream stream = System.IO.File.Open(f, FileMode.Open))
{
string fileName = Path.GetFileName(f);
await WriteFilesToOneDrive(graphClien, stream, user, fileName, FolderId);
}
}
Execute(graphClien, user, d);
}
}
catch (Exception excpt)
{
Console.WriteLine(excpt.Message);
}
}
Я использую:
C#. Net версия 4.7.2. Visual Studio