public void MoveItem(string source, string destination, string newName)
 {
     ThrowIfDisposed();
     using var sourceItem      = CreateShellItem(source);
     using var destinationItem = CreateShellItem(destination);
     _fileOperation.MoveItem(sourceItem.Item, destinationItem.Item, newName, null);
 }
        public void MoveItem(string source, string destination, string newName)
        {
            IShellItem sourceItem      = SafeNativeMethods.CreateShellItem(source);
            IShellItem destinationItem = SafeNativeMethods.CreateShellItem(destination);

            fileOperation.MoveItem(sourceItem, destinationItem, newName, null);
        }
 public void MoveItem(string source, string destination, string newName)
 {
     ThrowIfDisposed();
     using (ComReleaser <IShellItem> sourceItem = CreateShellItem(source))
         using (ComReleaser <IShellItem> destinationItem = CreateShellItem(destination)) {
             _fileOperation.MoveItem(sourceItem.Item, destinationItem.Item, newName, null);
         }
 }
Exemple #4
0
        public static void Move(string destination, string source, bool overwrite = true)
        {
            if (Path.GetFullPath(destination)
                == Path.GetFullPath(source))
            {
                return;
            }

            if (!overwrite)
            {
                destination = GetNonOverwriteFilename(destination);
            }

            if (_fileOperation == null)
            {
                System.IO.File.Move(source, destination);
            }
            else
            {
                if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) &&
                    string.Equals(destination, source, StringComparison.CurrentCultureIgnoreCase))
                {
                    System.IO.File.Move(destination + " ", source);
                    source = destination + " ";
                }

                var sourceItem = CreateItem(source);

                long result;
                if (Path.GetDirectoryName(source)
                    != Path.GetDirectoryName(destination))
                {
                    var destinationPathItem = CreateItem(Path.GetDirectoryName(destination));

                    result = _fileOperation.MoveItem(sourceItem, destinationPathItem,
                                                     Path.GetFileName(destination), IntPtr.Zero);

                    Marshal.ReleaseComObject(destinationPathItem);
                }
                else
                {
                    result = _fileOperation.RenameItem(sourceItem,
                                                       Path.GetFileName(destination), IntPtr.Zero);
                }

                Marshal.ReleaseComObject(sourceItem);

                AssertHresult(result);
            }
        }
        //public HResult RenameItems(object pUnkItems, string pszNewName)
        //{
        //    throw new NotImplementedException();
        //}

        public void MoveItem(IShellItem psiItem, IShellItem psiDestinationFolder, string pszNewName, FileOperationProgressSink pfopsItem)
        {
            if (disposed)
            {
                throw new ObjectDisposedException(nameof(FileOperation));
            }

            HResult hr = fileOperation.MoveItem(psiItem, psiDestinationFolder, pszNewName, pfopsItem?.FileOperationProgressSinkInternal);

            if (!CoreErrorHelper.Succeeded(hr))
            {
                Marshal.ThrowExceptionForHR((int)hr);
            }
        }