Exemple #1
0
        /// <summary>
        /// 显示文件夹下所有子文件夹和文件的名称
        /// </summary>
        /// <param name="tv">TreeView控件</param>
        /// <param name="Sdir">文件夹的目录</param>
        /// <param name="TNode">节点</param>
        /// <param name="n">标识,判断当前是文件夹还是文件</param>
        public void Files_Copy(TreeView tv, string Sdir, TreeNode TNode, int n)
        {
            DirectoryInfo dir = new DirectoryInfo(Sdir);

            try
            {
                if (!dir.Exists)//判断所指的文件或文件夹是否存在
                {
                    return;
                }
                DirectoryInfo dirD = dir as DirectoryInfo; //如果给定参数不是文件夹则退出
                if (dirD == null)                          //判断文件夹是否为空
                {
                    return;
                }
                else
                {
                    if (n == 0)
                    {
                        TNode     = tv.Nodes.Add(dirD.Name);//添加文件夹的名称
                        TNode.Tag = 1;
                    }
                    else
                    {
                        TNode     = TNode.Nodes.Add(dirD.Name);//添加文件夹中各子文件夹的名称
                        TNode.Tag = 1;
                    }
                }
                FileSystemInfo[] files = dirD.GetFileSystemInfos();//获取文件夹中所有的文件和子文件夹
                //对单个FileSystemInfo进行判断,如果是文件夹则进行地柜
                foreach (FileSystemInfo FSys in files)
                {
                    FileInfo file = FSys as FileInfo;
                    if (file != null)//如果是文件的话对文件进行复制操作
                    {
                        //获取文件所在的原始路径
                        FileInfo SFInfo = new FileInfo(file.DirectoryName + "\\" + file.Name);
                        TNode.Nodes.Add(file.Name);//添加文件
                        TNode.Tag = 1;
                    }
                    else
                    {
                        string pp = FSys.Name;                                   //获取当前搜索到的文件夹名称
                        Files_Copy(tv, Sdir + "\\" + FSys.ToString(), TNode, 1); //如果是文件夹则进行递归调用
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
        }
Exemple #2
0
        /// <summary>
        /// 顯示文件夾下所有子文件夾及文件的名稱
        /// </summary>
        /// <param Sdir="string">文件夾的目錄</param>
        /// <param TNode="TreeNode">節點</param>
        /// <param n="int">標識,判斷目前是文件夾,還是文件</param>
        private void Files_Copy(TreeView TV, string Sdir, TreeNode TNode, int n)
        {
            DirectoryInfo dir = new DirectoryInfo(Sdir);

            try
            {
                if (!dir.Exists)//判斷所指的文件或文件夾是否存在
                {
                    return;
                }
                DirectoryInfo dirD = dir as DirectoryInfo; //如果給定參數不是文件夾則退出
                if (dirD == null)                          //判斷文件夾是否為空
                {
                    return;
                }
                else
                {
                    if (n == 0)
                    {
                        TNode     = TV.Nodes.Add(dirD.Name);//新增文件夾的名稱
                        TNode.Tag = 1;
                    }
                    else
                    {
                        TNode     = TNode.Nodes.Add(dirD.Name);//新增文件夾裡面各文件夾的名稱
                        TNode.Tag = 1;
                    }
                }
                FileSystemInfo[] files = dirD.GetFileSystemInfos();//取得文件夾中所有文件和文件夾
                //對單個FileSystemInfo進行判斷,如果是文件夾則進行遞迴操作
                foreach (FileSystemInfo FSys in files)
                {
                    FileInfo file = FSys as FileInfo;
                    if (file != null)                                                          //如果是文件的話,進行文件的複製操作
                    {
                        FileInfo SFInfo = new FileInfo(file.DirectoryName + "\\" + file.Name); //取得文件所在的原始路徑
                        TNode.Nodes.Add(file.Name);                                            //新增文件
                        TNode.Tag = 1;
                    }
                    else
                    {
                        string pp = FSys.Name;                                   //取得目前搜索到的文件夾名稱
                        Files_Copy(TV, Sdir + "\\" + FSys.ToString(), TNode, 1); //如果是文件夾,則進行遞迴呼叫
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
        }
Exemple #3
0
        /// <summary>
        /// 文件夹的复制
        /// </summary>
        /// <param Ddir="string">要复制的目的路径</param>
        /// <param Sdir="string">要复制的原路径</param>
        public void Files_Copy(string Ddir, string Sdir)
        {
            DirectoryInfo dir    = new DirectoryInfo(Sdir);
            string        SbuDir = Ddir;

            try
            {
                if (!dir.Exists)//判断所指的文件或文件夹是否存在
                {
                    return;
                }
                DirectoryInfo dirD  = dir as DirectoryInfo;              //如果给定参数不是文件夹则退出
                string        UpDir = UpAndDown_Dir(Ddir);
                if (dirD == null)                                        //判断文件夹是否为空
                {
                    Directory.CreateDirectory(UpDir + "\\" + dirD.Name); //如果为空,创建文件夹并退出
                    return;
                }
                else
                {
                    Directory.CreateDirectory(UpDir + "\\" + dirD.Name);
                }
                SbuDir = UpDir + "\\" + dirD.Name + "\\";
                FileSystemInfo[] files = dirD.GetFileSystemInfos();//获取文件夹中所有文件和文件夹
                //对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作
                foreach (FileSystemInfo FSys in files)
                {
                    FileInfo file = FSys as FileInfo;
                    if (file != null)                                                          //如果是文件的话,进行文件的复制操作
                    {
                        FileInfo SFInfo = new FileInfo(file.DirectoryName + "\\" + file.Name); //获取文件所在的原始路径
                        SFInfo.CopyTo(SbuDir + "\\" + file.Name, true);                        //将文件复制到指定的路径中
                    }
                    else
                    {
                        string pp = FSys.Name;                                               //获取当前搜索到的文件夹名称
                        Files_Copy(SbuDir + FSys.ToString(), Sdir + "\\" + FSys.ToString()); //如果是文件,则进行递归调用
                    }
                }
            }
            catch
            {
                MessageBox.Show("文件制复失败。");
                return;
            }
        }
        /// <summary>
        /// 資料夾的複製
        /// </summary>
        /// <param Ddir="string">要複製的目的路徑</param>
        /// <param Sdir="string">要複製的原路徑</param>
        public void Files_Copy(string Ddir, string Sdir)
        {
            DirectoryInfo dir    = new DirectoryInfo(Sdir);
            string        SbuDir = Ddir;

            try
            {
                if (!dir.Exists)//判斷所指的文件或資料夾是否存在
                {
                    return;
                }
                DirectoryInfo dirD  = dir as DirectoryInfo;              //如果給定參數不是資料夾則退出
                string        UpDir = UpAndDown_Dir(Ddir);
                if (dirD == null)                                        //判斷資料夾是否為空
                {
                    Directory.CreateDirectory(UpDir + "\\" + dirD.Name); //如果為空,建立資料夾並退出
                    return;
                }
                else
                {
                    Directory.CreateDirectory(UpDir + "\\" + dirD.Name);
                }
                SbuDir = UpDir + "\\" + dirD.Name + "\\";
                FileSystemInfo[] files = dirD.GetFileSystemInfos();//取得資料夾中所有文件和資料夾
                //對單個FileSystemInfo進行判斷,如果是資料夾則進行遞迴操作
                foreach (FileSystemInfo FSys in files)
                {
                    FileInfo file = FSys as FileInfo;
                    if (file != null)                                                          //如果是文件的話,進行文件的複製操作
                    {
                        FileInfo SFInfo = new FileInfo(file.DirectoryName + "\\" + file.Name); //取得文件所在的原始路徑
                        SFInfo.CopyTo(SbuDir + "\\" + file.Name, true);                        //將文件複製到指定的路徑中
                    }
                    else
                    {
                        string pp = FSys.Name;                                               //取得目前搜索到的資料夾名稱
                        Files_Copy(SbuDir + FSys.ToString(), Sdir + "\\" + FSys.ToString()); //如果是文件,則進行遞迴呼叫
                    }
                }
            }
            catch
            {
                MessageBox.Show("文件制復失敗。");
                return;
            }
        }
        private void FileTraverse(string folderPath, List <string> extensions, bool?isRecursive)
        {
            if (string.IsNullOrEmpty(folderPath) || stopFlag)
            {
                return;
            }

            DirectoryInfo dir = new DirectoryInfo(folderPath);

            try
            {
                if (!dir.Exists)
                {
                    return;
                }
                DirectoryInfo    dirD  = dir as DirectoryInfo;
                FileSystemInfo[] files = dirD.GetFileSystemInfos();
                foreach (FileSystemInfo FSys in files)
                {
                    FileInfo fileInfo = FSys as FileInfo;

                    if (fileInfo != null && (extensions.Contains(System.IO.Path.GetExtension(fileInfo.Name)) || extensions.ElementAt(0) == ""))
                    {
                        string fileName = System.IO.Path.Combine(fileInfo.DirectoryName, fileInfo.Name);
                        l_info.Dispatcher.Invoke(() =>
                        {
                            l_info.Content = fileName;
                        });
                        filePathList.Add(fileName);
                    }
                    else if (isRecursive == true)
                    {
                        string pp = FSys.Name;
                        FileTraverse(System.IO.Path.Combine(folderPath, FSys.ToString()), extensions, isRecursive);
                    }
                }
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message);
                return;
            }
        }