首页 > 代码库 > .Net常用技巧_目录与文件操作

.Net常用技巧_目录与文件操作

using System;using System.Collections.Generic;using System.Text;using System.IO;namespace MyTool{    public class FileOperator    {        /// <summary>        /// 返回指定目录下所有文件信息        /// </summary>        /// <param name="strDirectory">目录字符串</param>        /// <returns></returns>        public static List<FileInfo> GetAllFilesInDirectory(string strDirectory)        {            List<FileInfo> listFiles = new List<FileInfo>(); //保存所有的文件信息            DirectoryInfo directory = new DirectoryInfo(strDirectory);            DirectoryInfo[] directoryArray = directory.GetDirectories();            FileInfo[] fileInfoArray = directory.GetFiles();            if (fileInfoArray.Length > 0) listFiles.AddRange(fileInfoArray);            foreach (DirectoryInfo _directoryInfo in directoryArray)            {                DirectoryInfo directoryA = new DirectoryInfo(_directoryInfo.FullName);                DirectoryInfo[] directoryArrayA = directoryA.GetDirectories();                FileInfo[] fileInfoArrayA = directoryA.GetFiles();                if (fileInfoArrayA.Length > 0) listFiles.AddRange(fileInfoArrayA);                GetAllFilesInDirectory(_directoryInfo.FullName);//递归遍历            }            return listFiles;        }        /// <summary>        /// 从一个目录将其内容移动到另一目录        /// </summary>        /// <param name="directorySource">源目录</param>        /// <param name="directoryTarget">目的目录</param>        public void MoveFolderTo(string directorySource, string directoryTarget)        {            //检查是否存在目的目录            if (!Directory.Exists(directoryTarget))            {                Directory.CreateDirectory(directoryTarget);            }            //先来移动文件            DirectoryInfo directoryInfo = new DirectoryInfo(directorySource);            FileInfo[] files = directoryInfo.GetFiles();            //移动所有文件            foreach (FileInfo file in files)            {                //如果自身文件在运行,不能直接覆盖,需要重命名之后再移动                if (File.Exists(Path.Combine(directoryTarget, file.Name)))                {                    if (File.Exists(Path.Combine(directoryTarget, file.Name + ".bak")))                    {                        File.Delete(Path.Combine(directoryTarget, file.Name + ".bak"));                    }                    File.Move(Path.Combine(directoryTarget, file.Name), Path.Combine(directoryTarget, file.Name + ".bak"));                }                file.MoveTo(Path.Combine(directoryTarget, file.Name));            }            //最后移动目录            DirectoryInfo[] directoryInfoArray = directoryInfo.GetDirectories();            foreach (DirectoryInfo dir in directoryInfoArray)            {                MoveFolderTo(Path.Combine(directorySource, dir.Name), Path.Combine(directoryTarget, dir.Name));            }        }        /// <summary>        /// 从一个目录将其内容复制到另一目录        /// </summary>        /// <param name="directorySource">源目录</param>        /// <param name="directoryTarget">目的目录</param>        public static void CopyFolderTo(string directorySource, string directoryTarget)        {            //检查是否存在目的目录            if (!Directory.Exists(directoryTarget))            {                Directory.CreateDirectory(directoryTarget);            }            //先来复制文件            DirectoryInfo directoryInfo = new DirectoryInfo(directorySource);            FileInfo[] files = directoryInfo.GetFiles();            //复制所有文件            foreach (FileInfo file in files)            {                file.CopyTo(Path.Combine(directoryTarget, file.Name));            }            //最后复制目录            DirectoryInfo[] directoryInfoArray = directoryInfo.GetDirectories();            foreach (DirectoryInfo dir in directoryInfoArray)            {                CopyFolderTo(Path.Combine(directorySource, dir.Name), Path.Combine(directoryTarget, dir.Name));            }        }    }}

注:自己用的,不一定符合别处的需求。