2016-09-19 9 views
4

私はAzure File Storageでファイルを同じ場所にある場所から別の場所に移動する方法を理解しようとしています。Azure Storage SDKを使用してAzureファイルストレージ上のファイルを1つのサブフォルダから別のサブフォルダに移動するにはどうすればよいですか?

など。

source -> \\Share1\someFile.txt 
destination -> \\Share1\Foo\Bar\someFile.txt 
  • 私はソースを削除した後、最初のファイルをコピーする必要がありますか?
  • 宛先サブディレクトリが存在しない場合はどうなりますか?最初にサブディレクトリごとにCreateIfNotExistsAsyncする必要がありますか?

歓声!

答えて

4

これはdocumented in the Getting Started guide on Azure Storage Filesの参照です。

StartCopyの方法でファイルをある場所から別の場所にコピーする必要があります。

// Start the copy operation. 
destinationFile.StartCopy(sourceFile); 

また、宛先ディレクトリが存在しない場合は作成する必要があります。

1

Azureストレージファイル共有は、SMB互換の共有です。したがって、通常のファイルI/O操作でファイルのコピー/移動を行うことができます。これは、ストレージAPIを使用して、具体的にコンテナを作成し、BLOBコピーを開始する必要がある直接BLOB操作とは対照的です。

+0

"通常のファイル入出力操作では" " - あなたはそれを" System.File.IO "を使って...あなたはその名前空間のメソッドを使うことができますか?私は実際に公式のStorage SDKを使用していますが、その方法を使用していますが、Storage SDKライブラリを利用したいと考えています。 –

+0

@ Pure.Krome - はい - それはまさに私が言っていることです。 [この記事](https://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-files/)から引用するには: "*標準ファイルコマンドは、コマンドプロンプトを表示したり、マウントした共有とその内容をファイルエクスプローラから表示したりすることができます。また、ファイル共有にアクセスする仮想マシン内のSystem.IO名前空間で提供される標準のWindowsファイルI/O API .NET Framework。* " –

+0

甘い - 私はあなたがそれを言ったと思った。あなたが言ったことは、仮想ディスク(SMB)であるマウントを介してファイルストレージにアクセスしようとしているときのためです。それは私がやろうとしていることではありません。私にはマウントがありません。私は1つも望んでいません。私はローカルマウントを持っていないので、System.File.IOから何かを使用することはできません。第二に、たとえ私がそれを持っていたとしても、SMBはRESTエンドポイントを使うよりも遅いです(ref:http://stackoverflow.com/questions/37581971/azure-file-storage-smb-slow-to-list-files-in-ディレクトリ)。だから - 私はSDKを介してこれを行う方法を理解しようとしています(OPが言及しているように)。 –

-2

Azure BLOBサブディレクターは物理的に存在しないという点で仮想的な機能であり、BLOB /ファイルの名前にはフルパスが含まれています。そのため、ディレクトリを明示的に「作成」する必要はありません。

アズールのblobs /ファイルに対してアトミックな "名前の変更"メソッドが存在するとは思わない...それを回避するには、新しい名前でコピーして元のファイルを削除する必要があります。

+1

このガイダンスは、BLOBストレージの上にSMB共有を実装するAzure File Storageではなく、BLOBに直接適用されます。 OPは具体的に質問していた)。 –

2

残念ながら、クライアントSDKが依存しているREST APIを通じて移動/名前変更機能が公開されていません。もちろん、これらの機能はSMB経由で実行できます。私たちはバックログにこれらの機能を備えていますが、実装にはタイムラインはまだありません。

関連する問題