Exemple #1
0
        /// <summary>
        /// Moves a directory.
        /// </summary>
        /// <param name="sourceDirectoryName">The directory to move.</param>
        /// <param name="destinationDirectoryName">The target directory name.</param>
        public override void MoveDirectory(string sourceDirectoryName, string destinationDirectoryName)
        {
            try
            {
                Nfs3FileHandle sourceParent = GetParentDirectory(sourceDirectoryName);
                Nfs3FileHandle destParent   = GetParentDirectory(destinationDirectoryName);

                string sourceName = Utilities.GetFileFromPath(sourceDirectoryName);
                string destName   = Utilities.GetFileFromPath(destinationDirectoryName);

                Nfs3FileHandle fileHandle = _client.Lookup(sourceParent, sourceName);
                if (fileHandle == null)
                {
                    throw new DirectoryNotFoundException(string.Format(CultureInfo.InvariantCulture, "The directory '{0}' does not exist", sourceDirectoryName));
                }

                Nfs3FileAttributes sourceAttrs = _client.GetAttributes(fileHandle);
                if ((sourceAttrs.Type & Nfs3FileType.Directory) == 0)
                {
                    throw new DirectoryNotFoundException(string.Format(CultureInfo.InvariantCulture, "The path '{0}' is not a directory", sourceDirectoryName));
                }

                _client.Rename(sourceParent, sourceName, destParent, destName);
            }
            catch (Nfs3Exception ne)
            {
                throw ConvertNfsException(ne);
            }
        }