C# WPF Example: How to move or copy top 5 size files(in folder) from one location to other location

Using below program u can move top 5 size files from one folder to other folder


XAML CODE
<Window x:Class="Cleanup.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">

    <Grid Margin="0,0,13,0">
        <DatePicker Name="StartDatePicker" HorizontalAlignment="Left" Margin="112,156,0,0" VerticalAlignment="Top" Height="23" Width="107"/>
        <DatePicker Name="EndDatePicker" HorizontalAlignment="Left" Margin="344,156,0,0" VerticalAlignment="Top" Height="23" Width="108"/>
        <Label Content="Start Date" x:Name="StartDate"  HorizontalAlignment="Left" Margin="43,156,0,0" VerticalAlignment="Top" Height="28" Width="67"/>
        <Label Content="End Date" Name="EndDate" HorizontalAlignment="Left" Margin="278,154,0,0" VerticalAlignment="Top" Background="Transparent" Height="27" Width="61"/>
        <Label Content="Clean up" HorizontalAlignment="Left" Margin="149,20,0,0" VerticalAlignment="Top" FontSize="18" FontWeight="Bold"/>
        <Button Content="Delete" HorizontalAlignment="Left" Margin="225,233,0,0" VerticalAlignment="Top" Width="80" Click="DeleteButtonClick" Height="23"/>
        <Label  Content="" Name="ErrReqStartDate" HorizontalAlignment="Left" Margin="112,184,0,0" VerticalAlignment="Top" Background="#00000000" Foreground="#FFEC0D0D" Height="31" Width="163"/>

        <Label Content="" Name="ErrReqEndDate"  HorizontalAlignment="Left" Margin="344,184,0,0" VerticalAlignment="Top" Foreground="#FFEC0D0D" Height="31" Width="150"/>
        <Label Content="Source Folder" HorizontalAlignment="Left" Margin="37,80,0,0" VerticalAlignment="Top"/>
        <TextBox Name="txtSourceFolder" HorizontalAlignment="Left" Height="23" Margin="149,80,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="345"/>
        <Label Content="Destination Folder" HorizontalAlignment="Left" Margin="37,111,0,0" VerticalAlignment="Top"/>
        <TextBox Name="txtDestinationFolder" HorizontalAlignment="Left" Height="23" Margin="149,111,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="345"/>
        <Label HorizontalAlignment="Left" Name="mainErrLabel" Height="28" Margin="55,205,0,0"  Content="" VerticalAlignment="Top" Width="430" Foreground="#FFE20D0D"/>

    </Grid>

</Window>


XAML.CS Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace CleanUp
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        /// <summary>
        /// Delete button click
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DeleteButtonClick(object sender, RoutedEventArgs e)
        {
            bool validate;
            //validate=Validate();
            TransferFiles();
        }

        /// <summary>
        /// Transfer files from one location to other
        /// </summary>
        private void TransferFiles()
        {
            string startFolder = @"C:\Users\nrang\Desktop\zipfiles\";
           // Take a snapshot of the file system.
            string destFolder = @"C:\Users\nrang\Desktop\zipfilesdest\";

            DateTime? startDatePicker,endDatePicker;
            startDatePicker = StartDatePicker.SelectedDate;
            endDatePicker = EndDatePicker.SelectedDate;

            System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);

            // This method assumes that the application has discovery permissions 
            // for all folders under the specified path.
            IEnumerable<System.IO.FileInfo> fileList = dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories);

            //Return the FileInfos for the 5 largest files 
            // query for top 5 is an IEnumerable<System.IO.FileInfo> 
            var queryFiveLargest =
                (from file in fileList
                 let date=GetFileCreatedDate(file)
                 let len = GetFileLength(file)
                 where date >=startDatePicker && date <= endDatePicker
                 orderby len descending
                 select file).Take(5);

            Console.WriteLine("The 10 largest files under {0} are:", startFolder);

            foreach (var v in queryFiveLargest)
            {
                Console.WriteLine("{0}: {1} bytes", v.FullName, v.Length);
                //System.IO.File.Copy(v.FullName, destFolder+v.Name, true);
                System.IO.File.Move(v.FullName, destFolder + v.Name);
            }
            mainErrLabel.Content = "Data Transfer Completed Successfully";
            
            ////Query to get other files for deletion
            //var queryAllFiles =
            //        (from file in fileList
            //         let date = GetFileCreatedDate(file)                
            //         where date >=startDatePicker &&date<=endDatePicker 
            //         select file);

            ////delete other extra files. 
            //foreach (var v in queryAllFiles)
            //{
            //    Console.WriteLine("{0}: {1} bytes", v.FullName, v.Length);
            //    //System.IO.File.Copy(v.FullName, destFolder+v.Name, true);
            //    System.IO.File.Delete(v.FullName);
            //}
            
           
        }

        static long GetFileLength(System.IO.FileInfo fi)
        {
            long retval;
            try
            {
                retval = fi.Length;
            }
            catch (System.IO.FileNotFoundException)
            {
                // If a file is no longer present, 
                // just add zero bytes to the total.
                retval = 0;
            }
            return retval;
        }

        static DateTime GetFileCreatedDate(System.IO.FileInfo fi)
        {
            DateTime fileCreatedDate;
            try
            {
                fileCreatedDate = fi.CreationTime;
            }
            catch (Exception ex)
            {
                fileCreatedDate = DateTime.Today;
            }
            return fileCreatedDate;
        }
    }
}

Output:


If you have any queries or suggestions, please feel free to ask in comments section.
Share this post :

Post a Comment

Please give your valuable feedback on this post. You can submit any ASP.NET article here. We will post that article in this website by your name.

 
Support : Ranga Rajesh Kumar
Copyright © 2012. ASP.NET Examples - All Rights Reserved
Site Designed by Ranga Rajesh Kumar