私のアプリケーションでは、OneDriveを使用してデータを同期させています。私はOneDriveにファイルを書き込んでいますが、ローカルの古いデータを新しいOneDriveデータで置き換えることはできません。Onedrive <Item>の内容をローカルファイルに書き込む方法
私の現在のメソッドは、例外をスローせずに完了し、OneDriveのファイルと同じテキストデータを返しません。 このメソッドの目的は、OneDriveファイルのデータをローカルファイルと比較し、OneDriveが新しい場合は、OndeDriveファイルの内容をローカルのStorageFileに書き込み、デシリアライズするために戻します。
private async Task<string> GetSavedDataFileAsync(string filename)
{
string filepath = _appFolder + @"\" + KOWGame + @"\" + filename;
StorageFile localread;
BasicProperties localprops = null;
string txt;
try
{
localread = await local.GetFileAsync(filepath);
localprops = await localread.GetBasicPropertiesAsync();
}
catch (FileNotFoundException)
{ localread = null; }
if (_userDrive != null)
{
if (_userDrive.IsAuthenticated)
{
try
{
Item item = await _userDrive.Drive.Special.AppRoot.ItemWithPath(filepath).Request().GetAsync();
if (item != null)
{
DateTimeOffset drivemodified = (DateTimeOffset)item.FileSystemInfo.LastModifiedDateTime;
if (localprops != null)
{
if (drivemodified > localprops.DateModified)
{
Stream stream = await localread.OpenStreamForWriteAsync();
using (stream)
{ await _userDrive.Drive.Special.AppRoot.ItemWithPath(filepath).Request().GetAsync(); }
}
}
}
}
catch (OneDriveException e)
{
if (e.IsMatch(OneDriveErrorCode.ActivityLimitReached.ToString()))
{ string stop; }
}
}
}
if (localread == null) return string.Empty;
txt = await FileIO.ReadTextAsync(localread);
return txt;
}
私はその中で、私は、ローカルファイルのストリームを開くために必要な、私はOneDriveにStorageFileを書くことについてのスタックで見つかった別の答えをリバースエンジニアリングしようとしたが、私は正常に動作して表示されません。
あなたはそれを動作させるために管理していましたか?私のローカルファイルとリモートファイルは決して同じDateTimeOffsetを持たないからです。そして、彼らがいつも異なっているなら、私のアプリは常にダウンロードしてアップロードします。あなたと同じ理由でこのコントロールが必要です。同期を制御します。ありがとう – Dpedrinha
@Dpedrinha要するに、はい。以下の答えで、OneDriveアイテムのコンテンツをローカルファイルに書き込むことができました。私がローカルとオンドライブの比較を行うとき、私のコードは 'var localinfo = localfile.DateModified;'と 'var localtime = localinfo.DateModified;' var oneDtime =(DateTimeOffset)oneDItem.FileSystemInfo.LastModifiedDateTime; switch(oneDtime> locattime) 'あなたにさらなる情報が必要なのかどうか教えてください。私は完全な方法をあなたに送ることができます。 – Lindsay
はい、助けてください。ローカルファイル(StorageFile)にDateModified属性がありません。それはDateCreatedのみです。そして、それは常にリモートファイルとは異なります。 – Dpedrinha