欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)WPF項(xiàng)目復(fù)制和移動(dòng)文件夾

 更新時(shí)間:2022年03月28日 09:36:28   作者:.NET開發(fā)菜鳥  
這篇文章介紹了C#實(shí)現(xiàn)WPF項(xiàng)目復(fù)制和移動(dòng)文件夾的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

使用WPF做的一個(gè)簡單的操作文件的demo,包括復(fù)制和移動(dòng)文件夾,核心思想就是使用遞歸,如果只是移動(dòng)或者復(fù)制單一文件,直接使用File.Copy()或者File.Move()方法即可。

XAML代碼

<Window x:Class="OperationFile.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:OperationFile"
        mc:Ignorable="d"
        Title="MainWindow" Height="220" Width="300">
    <Grid>
        <Button Content="復(fù)制文件" HorizontalAlignment="Left" VerticalAlignment="Top" Height="30" Width="100" Margin="80,20"
                x:Name="btnCopy" Click="btnCopy_Click"/>

        <Button Content="移動(dòng)文件" HorizontalAlignment="Left" VerticalAlignment="Top" Height="30" Width="100" Margin="80,70"
                x:Name="btnMove" Click="btnMove_Click"/>
    </Grid>
</Window>

后端代碼如下:

using System;
using System.Windows;

namespace OperationFile
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 移動(dòng)文件夾(拷貝)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnMove_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                FileUtility.MoveFolder(@"C:\Test", @"D:\Raw Data\Temp");
                MessageBox.Show("移動(dòng)文件夾完成");
            }
            catch (Exception ex)
            {
                MessageBox.Show("移動(dòng)文件夾出錯(cuò)");
            }
        }

        /// <summary>
        /// 復(fù)制文件夾
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCopy_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                FileUtility.CopyFolder(@"C:\Test", @"D:\Raw Data\Temp");
                MessageBox.Show("復(fù)制文件夾完成");
            }
            catch (Exception ex)
            {
                MessageBox.Show("復(fù)制文件夾出錯(cuò)");
            }
        }
    }
}

FileUtility類代碼

using System;
using System.IO;

namespace OperationFile
{
    public static class FileUtility
    {
        /// <summary>
        /// 復(fù)制文件夾及文件
        /// </summary>
        /// <param name="sourceFolder">原文件路徑</param>
        /// <param name="destFolder">目標(biāo)文件路徑</param>
        /// <returns></returns>
        public static void CopyFolder(string sourceFolder, string destFolder)
        {
            try
            {
                //如果目標(biāo)路徑不存在,則創(chuàng)建目標(biāo)路徑
                if (!Directory.Exists(destFolder))
                {
                    Directory.CreateDirectory(destFolder);
                }
                //得到原文件根目錄下的所有文件
                string[] files = Directory.GetFiles(sourceFolder);
                foreach (string file in files)
                {
                    string name = Path.GetFileName(file);
                    string dest = Path.Combine(destFolder, name);
                    // 復(fù)制文件
                    File.Copy(file, dest);
                }
                //得到原文件根目錄下的所有文件夾
                string[] folders = Directory.GetDirectories(sourceFolder);
                foreach (string folder in folders)
                {
                    string dirName = folder.Split('\\')[folder.Split('\\').Length - 1];
                    string destfolder = Path.Combine(destFolder, dirName);
                    // 遞歸調(diào)用
                    CopyFolder(folder, destfolder);
                }
            }
            catch (Exception ex)
            {
                throw new Exception($"copy file Error:{ex.Message}\r\n source:{ex.StackTrace}");
            }
        }


        /// <summary>
        /// 移動(dòng)文件
        /// </summary>
        /// <param name="sourceFolder">源文件夾</param>
        /// <param name="destFolder">目標(biāo)文件呢</param>
        public static void MoveFolder(string sourceFolder, string destFolder)
        {
            try
            {
                //如果目標(biāo)路徑不存在,則創(chuàng)建目標(biāo)路徑
                if (!Directory.Exists(destFolder))
                {
                    Directory.CreateDirectory(destFolder);
                }
                //得到原文件根目錄下的所有文件
                string[] files = Directory.GetFiles(sourceFolder);
                foreach (string file in files)
                {
                    string name = Path.GetFileName(file);
                    string dest = Path.Combine(destFolder, name);
                    // 移動(dòng)文件
                    File.Move(file, dest);
                }
                //得到原文件根目錄下的所有文件夾
                string[] folders = Directory.GetDirectories(sourceFolder);
                foreach (string folder in folders)
                {
                    string dirName = folder.Split('\\')[folder.Split('\\').Length - 1];
                    string destfolder = Path.Combine(destFolder, dirName);
                    // 遞歸調(diào)用
                    MoveFolder(folder, destfolder);
                }

                // 刪除源文件夾
                Directory.Delete(sourceFolder);
            }
            catch (Exception ex)
            {
                throw new Exception($"move file Error:{ex.Message}\r\n source:{ex.StackTrace}");
            }
        }
    }
}

到此這篇關(guān)于C#實(shí)現(xiàn)WPF項(xiàng)目復(fù)制和移動(dòng)文件夾的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C# 設(shè)計(jì)模式系列教程-單例模式

    C# 設(shè)計(jì)模式系列教程-單例模式

    單例模式防止在應(yīng)用程序中實(shí)例化多個(gè)對(duì)象。這就節(jié)約了開銷,每個(gè)實(shí)例都要占用一定的內(nèi)存,創(chuàng)建對(duì)象時(shí)需要時(shí)間和空間。
    2016-06-06
  • c# SqlDataAdapter中的Fill是怎么實(shí)現(xiàn)的

    c# SqlDataAdapter中的Fill是怎么實(shí)現(xiàn)的

    這篇文章主要介紹了c# SqlDataAdapter中的Fill是怎么實(shí)現(xiàn)的,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • WPF快速入門教程之綁定Binding

    WPF快速入門教程之綁定Binding

    初學(xué)wpf,經(jīng)常被Binding搞暈,以下記錄寫B(tài)inding的基礎(chǔ)。下面這篇文章主要給大家介紹了關(guān)于WPF快速入門教程之綁定Binding的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-10-10
  • 詳細(xì)解析C#多線程同步事件及等待句柄

    詳細(xì)解析C#多線程同步事件及等待句柄

    本篇文章主要介紹了C#多線程同步事件及等待句柄,希望通過本篇的介紹能對(duì)常見的線程同步方法有一個(gè)整體的認(rèn)識(shí),有需要的可以了解一下。
    2016-11-11
  • C#中List.Contains(T)失效的解決方法

    C#中List.Contains(T)失效的解決方法

    這篇文章主要介紹了C#中List.Contains(T)失效的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • C#實(shí)現(xiàn)繪制隨機(jī)噪點(diǎn)和直線

    C#實(shí)現(xiàn)繪制隨機(jī)噪點(diǎn)和直線

    這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)繪制隨機(jī)噪點(diǎn)和直線,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • C#集合之可觀察集合的用法

    C#集合之可觀察集合的用法

    這篇文章介紹了C#集合之可觀察集合的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#指針變量與unsafe的實(shí)現(xiàn)

    C#指針變量與unsafe的實(shí)現(xiàn)

    本文主要介紹了C#指針變量與unsafe的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • C#根據(jù)Word模版生成Word文件

    C#根據(jù)Word模版生成Word文件

    這篇文章主要為大家詳細(xì)介紹了C#根據(jù)Word模版生成Word文件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • C#打開揚(yáng)聲器的實(shí)操方法和代碼

    C#打開揚(yáng)聲器的實(shí)操方法和代碼

    在本篇文章中我們給大家分享的是關(guān)于C#如何打開揚(yáng)聲器的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的讀者們學(xué)習(xí)下。
    2019-08-08

最新評(píng)論