using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using Excel = Microsoft.Office.Interop.Excel;
using Azure;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
namespace SpeakerDocumentsMigration
{
class Program
{
static string connectionstring = "";
static string filesharename = "";
static string Sourcepath = "";
static string DestPath = "";
static void Main(string[] args)
{
ShareFileClient sourcefile = new ShareFileClient(connectionstring, filesharename,Sourcepath);
ShareFileClient destfile = new ShareFileClient(connectionstring, filesharename, DestPath);
destfile.StartCopy(sourcefile.Uri);
}
}
}
Seems like above code is not working, assuming I enter values for all the variables declared.
Can someone please guide how can I proceed?
I tried the below code and can copy one file from one folder to another within one Azure Fileshare using C# dot net.
Code :
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;
using System;
using System.IO;
using System.Threading.Tasks;
namespace SpeakerDocumentsMigration
{
class Program
{
static string connectionstring = "<storage_connec_string>";
static string filesharename = "<fileshare_name>";
static string SourcePath = "<sourcefolder_name/sourcefile_name.txt>";
static string DestPath = "<destinationfolder_name/destinationfile_name.txt>";
static async Task Main(string[] args)
{
ShareClient shareClient = new ShareClient(connectionstring, filesharename);
ShareDirectoryClient sourceDirectory = shareClient.GetDirectoryClient(Path.GetDirectoryName(SourcePath));
ShareDirectoryClient destDirectory = shareClient.GetDirectoryClient(Path.GetDirectoryName(DestPath));
if (await sourceDirectory.ExistsAsync() && await destDirectory.ExistsAsync())
{
ShareFileClient sourceFile = sourceDirectory.GetFileClient(Path.GetFileName(SourcePath));
ShareFileClient destFile = destDirectory.GetFileClient(Path.GetFileName(DestPath));
if (await sourceFile.ExistsAsync())
{
ShareFileProperties properties = await sourceFile.GetPropertiesAsync();
if (properties.CopyStatus == CopyStatus.Success)
{
Console.WriteLine("File already copied.");
}
else
{
await destFile.StartCopyAsync(sourceFile.Uri);
await WaitForCopyToCompleteAsync(destFile);
Console.WriteLine("File copied successfully.");
}
}
else
{
Console.WriteLine("Source file does not exist.");
}
}
else
{
Console.WriteLine("Source or destination folder does not exist.");
}
}
static async Task WaitForCopyToCompleteAsync(ShareFileClient fileClient)
{
ShareFileProperties properties = await fileClient.GetPropertiesAsync();
while (properties.CopyStatus == CopyStatus.Pending)
{
await Task.Delay(1000);
properties = await fileClient.GetPropertiesAsync();
}
}
}
}
Output :
It runs successfully and copies one file from one folder to another in Fileshare.
I got the copied data from one file from one folder to another in file share at the Azure portal as below.
Source folder file :
Destination folder file :