public bool Exists(string file_path) { EnsureBucketName(); using (var client = Storage.GetClient()) { var s3DirectoryInfo = new S3DirectoryInfo(client, BucketName); var path = file_path.Split('/'); for (var i = 0; i < path.Length - 1; i++) { s3DirectoryInfo = s3DirectoryInfo.GetDirectory(path[i]); } return(s3DirectoryInfo.GetFiles(path.Last()).Any()); } }
public void RenameDirectoryOnS3FileSystem() { var syncNet = new Processor(_sourceObject, _targetDirectory, new SyncTaskQueue()); syncNet.ProcessSourceDirectory(); var directoryToRename = _sourceObject.GetDirectories().First(); syncNet.RenameDirectory(directoryToRename, "newName"); var directories = _s3DirectoryInfo.GetDirectories(); Assert.IsTrue(directories.Any(x => x.Name == "newName")); Assert.IsFalse(directories.Any(x => x.Name == directoryToRename.Name)); var renamedDirectory = _s3DirectoryInfo.GetDirectory("newName"); var files = renamedDirectory.GetFiles(); Assert.AreEqual(2, files.Count()); }
/// <summary> /// List bucket contents. /// Filter can be used to designate a directory, as long as it contains a forward slash /// </summary> /// <param name="filter">If it contains a forward slash, is directory</param> /// <returns></returns> public string[] List(string filter) { EnsureBucketName(); var path = ""; var exp = @"^([^\*]+/)([^/]*)$"; if (Regex.IsMatch(filter, exp)) { path = Regex.Replace(filter, exp, "$1"); filter = Regex.Replace(filter, exp, "$2"); } using (var client = Storage.GetClient()) { var s3DirectoryInfo = new S3DirectoryInfo(client, BucketName); foreach (var bit in path.Split('/')) { if (bit.Length > 0) { s3DirectoryInfo = s3DirectoryInfo.GetDirectory(bit); } } return(s3DirectoryInfo // get files .GetFiles(filter) .Select(f => f.Name) // get directories .Union( s3DirectoryInfo .GetDirectories(filter) // add a trailing slash to distinguish directories .Select(f => string.Format("{0}{1}", f.Name, "/")) ) .ToArray()); } }
public async Task <IStorageDirectory> GetDirectory(Uri uri) { IStorageDirectory response; S3DirectoryInfo directory; if (uri == null) { directory = _rootDirectory; } else { directory = _rootDirectory.GetDirectory(uri.AsKey()); } if (directory.Exists) { response = directory.ToStorageDirectory(); } else { throw new ArgumentException("Directory not found"); } return(response); }