コード例 #1
0
 private async void PlayButton_Click(object sender, EventArgs e)
 {
     PlayButton.Visible = false;
     PlayImage.Visible  = true;
     StatusBar.Show();
     if (!File.Exists(installing_path + "gta_sa.exe") && !File.Exists(installing_path + "samp.exe"))
     {
         CopyAsync ca = new CopyAsync();
         StatusBar.Text = "Trwa kopiowanie plików...";
         await ca.DirectoryCopy(game_path, installing_path, true, LowerPB, StatusBar);
     }
     else
     {
         StatusBar.Text = "Trwa sprawdzanie plików...";
         CheckFiles cf = new CheckFiles();
         cf.DeleteFilesExcept(installing_path, StatusBar);
     }
 }
コード例 #2
0
        public async Task DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs, ProgressBar pb, Label la)
        {
            DirectoryInfo dir = new DirectoryInfo(sourceDirName);

            if (!dir.Exists)
            {
                throw new DirectoryNotFoundException("Source directory does not exist or could not be found: " + sourceDirName);
            }

            DirectoryInfo[] dirs = dir.GetDirectories();
            if (!Directory.Exists(destDirName))
            {
                Directory.CreateDirectory(destDirName);
            }
            float files = Directory.GetFiles(sourceDirName, "*.*", SearchOption.AllDirectories).Count();
            float count = 0;

            foreach (string dirPath in Directory.GetDirectories(sourceDirName, "*", SearchOption.AllDirectories))
            {
                Directory.CreateDirectory(dirPath.Replace(sourceDirName, destDirName));
                foreach (string filename in Directory.EnumerateFiles(dirPath))
                {
                    try
                    {
                        using (FileStream SourceStream = File.Open(filename, FileMode.Open))
                        {
                            using (FileStream DestinationStream = File.Create(filename.Replace(sourceDirName, destDirName)))
                            {
                                count++;
                                float percentage = count / files * 100;
                                pb.Value = (int)percentage;
                                await SourceStream.CopyToAsync(DestinationStream);
                            }
                        }
                    }
                    catch (UnauthorizedAccessException)
                    {
                        Error.ShowError("Odznacz atrybut Tylko do Odczytu w pliku: \n" + filename);
                        Environment.Exit(0);
                    }
                }
            }

            foreach (string filename in Directory.EnumerateFiles(sourceDirName))
            {
                using (FileStream SourceStream = File.Open(filename, FileMode.Open))
                {
                    using (FileStream DestinationStream = File.Create(destDirName + filename.Substring(filename.LastIndexOf('\\'))))
                    {
                        try
                        {
                            await SourceStream.CopyToAsync(DestinationStream);
                        }
                        catch (UnauthorizedAccessException)
                        {
                            Error.ShowError("Wyłącz atrybut Tylko do Odczytu w pliku: " + filename);
                        }
                    }
                }
            }
            CheckFiles cf = new CheckFiles();

            la.Text = "Sprawdzanie plików...";
            cf.DeleteFilesExcept(destDirName, la);
        }