Ejemplo n.º 1
0
        private void mnuOpenFile_Click(object sender, RoutedEventArgs e)
        {
            FileItem selectedFile = GetSelectedFile();

            if (selectedFile != null)
            {
                ShellApi.ShellExecute((IntPtr)0, "open", selectedFile.GetFullPath(), null, selectedFile.DirName, 5);
            }
        }
Ejemplo n.º 2
0
        private bool DeleteFile(FileItem file)
        {
            var sfo = new ShellApi.SHFILEOPSTRUCT()
            {
                wFunc  = ShellApi.FileFuncFlags.FO_DELETE,
                fFlags = ShellApi.FILEOP_FLAGS.FOF_ALLOWUNDO | ShellApi.FILEOP_FLAGS.FOF_NOCONFIRMATION,
                pFrom  = file.GetFullPath() + char.MinValue + char.MinValue
            };

            return(ShellApi.SHFileOperation(ref sfo) == 0);
        }
Ejemplo n.º 3
0
        private void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            var fileItemArray = _files.Where(f => f.Selected).ToArray();

            if (fileItemArray.Length == 0)
            {
                return;
            }

            int  successCount = 0;
            int  failedCount  = 0;
            int  dirCount     = 0;
            long size         = 0;
            var  fileNames    = fileItemArray.Select(x => x.GetFullPath()).ToArray();

            DeleteFiles(fileNames);
            for (int index = fileItemArray.Length - 1; index >= 0; --index)
            {
                FileItem file = fileItemArray[index];
                if (!File.Exists(file.GetFullPath()))
                // if (DeleteFile(file))
                {
                    _files.Remove(file);
                    ++successCount;
                    size += file.Size;
                    if (Directory.Exists(file.DirName) && CleanDir(file.DirName))
                    {
                        ++dirCount;
                    }
                }
                else
                {
                    ++failedCount;
                }
                if (index % 100 == 0)
                {
                    GC.Collect();
                }
            }
            _files.RemoveOrphans();
            sbiText.Content = string.Format("删除成功: {0}, 失败: {1}, 释放空间: {2}, 清理目录数={3}",
                                            successCount, failedCount, FormatSize(size), dirCount);
        }
Ejemplo n.º 4
0
        private void Preview(Image img, FileItem[] files, int index)
        {
            BitmapImage bitmapImage1 = img.Source as BitmapImage;

            if (bitmapImage1 != null)
            {
                Stream streamSource = bitmapImage1.StreamSource;
                img.Source = null;
                if (streamSource != null)
                {
                    img.Source = null;
                    streamSource.Dispose();
                }
            }
            if (index >= files.Length)
            {
                return;
            }
            FileItem fileItem = files[index];

            string[] imageExts = { ".jpg", ".jpeg", ".png", ".gif", ".bmp" };
            string   ext       = Path.GetExtension(fileItem.Name) ?? "";

            ext = ext.ToLowerInvariant();
            if (imageExts.Contains(ext))
            {
                try
                {
                    byte[]      buffer       = File.ReadAllBytes(fileItem.GetFullPath());
                    BitmapImage bitmapImage2 = new BitmapImage();
                    bitmapImage2.CacheOption   = BitmapCacheOption.OnLoad;
                    bitmapImage2.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
                    bitmapImage2.BeginInit();
                    bitmapImage2.StreamSource = new MemoryStream(buffer);
                    bitmapImage2.EndInit();
                    img.Source = bitmapImage2;
                }
                catch (Exception ex)
                {
                }
            }
        }
Ejemplo n.º 5
0
 public void GetFullPath_Success()
 {
     // Arrange & Act & Assert
     Assert.Equal($@"{ProjectPath}{DirectoryPath}{RelativePath}\{FileName}", _fileItem.GetFullPath());
 }