/// <summary> /// Renames files in the specified <paramref name="directory" /> with specified /// <paramref name="renameUsing">format</paramref>. /// </summary> /// <param name="filesOrDirectories">The files or directories path where are the files to rename.</param> /// <param name="recursive">If set to <c>true</c> do it recursively; otherwise do it only in specified<paramref name="directory" />.</param> /// <param name="renameUsing">The format used to rename.</param> /// <returns>A task that represents the renaming process.</returns> /// <exception cref="System.IO.FileNotFoundException">If a specified file or directory doesn't exists.</exception> public async Task RenameAsync(IEnumerable<string> filesOrDirectories, bool recursive, RenameUsing renameUsing) { if (filesOrDirectories == null) throw new ArgumentNullException("filesOrDirectories"); if (!filesOrDirectories.Any()) { Log.I("No files or directories specified. Do nothing."); return; } _scopeAnswer = DialogAnswer.None; var tasks = _fileSystemHelper.ProcessForEachFilesAsync(filesOrDirectories, recursive, FileFilterProvider.TagFileMatcher, (f, cts) => RenameAsync(f, renameUsing)); await Task.WhenAll(tasks); }
public override Task RenameAsync(string file, RenameUsing renameUsing) { return _self.RenameAsync(file, renameUsing); }
/// <summary> /// Renames a file with specified <paramref name="renameUsing">format</paramref>. /// </summary> /// <param name="file">The file path to rename.</param> /// <param name="renameUsing">The format used to rename.</param> /// <returns>A task that represents the renaming process.</returns> /// <exception cref="System.IO.FileNotFoundException">If the <paramref name="file"/> doesn't exists.</exception> public virtual async Task RenameAsync(string file, RenameUsing renameUsing) { if (file == null) throw new ArgumentNullException("file"); if (renameUsing == RenameUsing.None) { Log.W("Trying to rename file '{0}' using 'None' as data. No rename will be applied.", file); return; } if (!_file.Exists(file)) throw new FileNotFoundException(string.Format("File '{0}' does not exists.", file)); file = _path.GetFullPath(file); try { await RenameUsingDateTaken(file); } catch (Exception ex) { Exception logException = Log.IsDebugEnabled ? ex : null; Log.E(logException, "Error while renaming file '{0}' with message '{1}'.", file, ex.Message); } }
/// <summary> /// Gets the rename tasks. /// </summary> /// <param name="directory">The directory.</param> /// <param name="recursive">if set to <c>true</c> [recursive].</param> /// <param name="renameUsing">The rename with.</param> /// <returns>A collection of renaming tasks.</returns> private IEnumerable<Task> GetRenameTasks(DirectoryInfo directory, bool recursive, RenameUsing renameUsing) { List<Task> renameTasks = ProcessFilesByExtension(directory, "jpg", (f) => RenameAsync(f, renameUsing)).ToList(); renameTasks.AddRange(ProcessFilesByExtension(directory, "jpeg", (f) => RenameAsync(f, renameUsing))); if (recursive) renameTasks.AddRange(directory.GetDirectories().SelectMany(d => GetRenameTasks(d, true, renameUsing))); return renameTasks; }
/// <summary> /// Renames the specified <paramref name="file" /> with specified <paramref name="renameUsing">format</paramref>. /// </summary> /// <param name="file">The file.</param> /// <param name="renameUsing">The format used to rename.</param> /// <returns> /// Task to rename. /// </returns> /// <exception cref="System.IO.FileNotFoundException">If file doesn't exists.</exception> public async Task RenameAsync(FileInfo file, RenameUsing renameUsing) { if (!File.Exists(file.FullName)) throw new FileNotFoundException(file.FullName); switch (renameUsing) { default: await RenameFileToDateTakenAsync(file); break; } }
/// <summary> /// Renames files in the specified <paramref name="directory" /> with specified /// <paramref name="renameUsing">format</paramref>. /// </summary> /// <param name="directory">The directory where are the files.</param> /// <param name="recursive"> /// If set to <c>true</c> do it recursively; otherwise do it only in specified /// <paramref name="directory" />. /// </param> /// <param name="renameUsing">The format used to rename.</param> /// <exception cref="System.IO.DirectoryNotFoundException">If directory doesn't exists.</exception> public async Task RenameAsync(DirectoryInfo directory, bool recursive, RenameUsing renameUsing) { if (!Directory.Exists(directory.FullName)) throw new DirectoryNotFoundException(directory.FullName); var tasks = GetRenameTasks(directory, recursive, renameUsing); await Task.WhenAll(tasks); }