private static void Main(string[] args)
var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY");
var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY");
var endpoint = "https://tos-cn-beijing.volces.com";
var region = "cn-beijing";
var bucketName = "*** Provide your bucket name ***";
var oldPrefix = "exampledir1/";
var newPrefix = "exampledir2/";
var client = TosClientBuilder.Builder().SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region).Build();
var listObjectsInput = new ListObjectsInput()
var listObjectsOutput = client.ListObjects(listObjectsInput);
foreach (var obj in listObjectsOutput.Contents)
var newKey = newPrefix + obj.Key.Substring(oldPrefix.Length);
var copyObjectInput = new CopyObjectInput()
var copyObjectOutput = client.CopyObject(copyObjectInput);
Console.WriteLine("CopyObject succeeded, request id {0}", copyObjectOutput.RequestID);
var deleteObjectInput = new DeleteObjectInput()
var deleteObjectOutput = client.DeleteObject(deleteObjectInput);
Console.WriteLine("DeleteObject succeeded, request id {0}", deleteObjectOutput.RequestID);
truncated = listObjectsOutput.IsTruncated;
marker = listObjectsOutput.NextMarker;
catch (TosServerException ex)
Console.WriteLine("CopyObject failed, request id {0}", ex.RequestID);
Console.WriteLine("CopyObject failed, status code {0}", ex.StatusCode);
Console.WriteLine("CopyObject failed, response header {0}", ex.Header);
Console.WriteLine("CopyObject failed, response error code {0}", ex.Code);
Console.WriteLine("CopyObject failed, response error message {0}", ex.Message);
catch (TosClientException ex)
Console.WriteLine("CopyObject failed, error message {0}", ex.Message);
Console.WriteLine("CopyObject failed, {0}", ex.Message);