2017-03-02 8 views
0

私はAzureファイルの名前を変更しようとしています。 これを行うには、(名前変更APIがないので)COPYとDELETEを行う必要があります。Azureファイルをコピーしてから削除すると、コピーが完了してから削除が開始されますか?

このコードでは、のCOPYが完了した後、DELETEは常ににキックバックされますか?

await destinationCloudFile.StartCopyAsync(sourceCloudFile); 
await sourceCloudFile.DeleteAsync(); 

私のような... コピーや何かを始めるために起こっている...ので、単語StartCopyAsycStartで混乱しています...

また、私はTask.WhenAll(both those tasks)をやっていませんよ。私はこれを同時にやろうとしていると思います。

重要な編集:これは、実際には、の右側にあるの元のファイル:同じ共有、同じコンテナ、同じディレクトリにコピーされます。もちろん、すべて同じですストレージアカウント。

乾杯!

+1

コピーの状態を確認することができますこれはhttps://blogs.msdn.microsoft.com/windowsazurestorage/2012/06/12/introducing-asynchronous-cross-account-copy-blob/(セクション"コピーは現在非同期です")。また、この回答:http://stackoverflow.com/a/21340397/5311735 – Evk

答えて

1

ファイルの名前を変更するだけであれば、使用しているコードはうまくいくはずです。名前の変更は、本質的に同じ共有ディレクトリ内のファイルをコピーしたあと、削除することです。そのコピー操作は同期的です。


ただし、ストレージアカウント間でファイルをコピーしているならば、コピー操作は非同期であり、あなたが実行したいのようなコピー操作は、(ソースファイル上の任意のさらなる行動を取る前に終了するのを待つ必要があります非同期コピー操作のためにmove操作)

次のコードはエラーなしで実行を終了:

await destinationCloudFile.StartCopyAsync(sourceCloudFile); 

その手段がブロブをコピーするためにあなたの要求はストレージSERVIによって受け入れられたことは何ですかそして待ち行列に入れられている。通常、コピーは非常に高速ですが、保証はありません。

コピー操作が完了したかどうか定期的に確認する必要があります。コピー先のファイルのプロパティを取得して、コピー操作の状態を確認します。

私はこれがストレージクライアントライブラリ(バージョン7.0.0にチェックされています)に公開されているとは思っていましたが、そこにはありません:(しかし、この情報はGet File Properties REST APIで取得できます。 x-ms-copy-statusレスポンスヘッダ(pendingsuccessabortedまたはfailed

編集:プロパティCopyStateがあるストレージクライアントSDK(バージョン8.1.4)では、あなたはあなたが読みたいmigth

+0

こんにちは@ gaurav - 私は実際に 'test.txt'から' test.txt.lock'に同じコンテナでファイルの名前を変更しています+ディレクトリ。 –

+0

これは同期します。申し訳ありませんが、より慎重に質問を読んでください。 –

+0

申し訳ありません - 私は_explicity_が記載されている必要があります。 –

関連する問題