using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using DevComponents.DotNetBar; using System.Threading; namespace Cyberpipe.GKT_Forms { public partial class F_GKT数据输入输出 : Office2007Form { public F_GKT数据输入输出() { InitializeComponent(); } #region 公共变量 GKT_logicfile.GKT_Affair GKTAClass = new Cyberpipe.GKT_logicfile.GKT_Affair();//实例化ModuleClass文件夹下的FrmAffairClass公共类 string dir = ""; string dir_Ok = ""; int m = 0; string Imadir = ""; System.Drawing.Image img1; System.Drawing.Image img2; System.Drawing.Image img3; Cyberpipe.udfiles.UpDownFile UDF = new udfiles.UpDownFile(Utility.udserviceurl); #endregion public void Drive_Name(ComboBox Cbm) { Cbm.Items.Clear(); DriveInfo[] myAllDrives = DriveInfo.GetDrives(); foreach (DriveInfo myDrive in myAllDrives)//循环写入每个磁盘的参数 { if (myDrive.IsReady) { Cbm.Items.Add(myDrive.Name); } } } public void SubForders(string dir, TreeView TV, TreeNode node) { int n = 0; try { DirectoryInfo directoryInfo = new DirectoryInfo(dir); TreeNode SelectNode = new TreeNode(); if (dir.Length <= 3) { TV.Nodes.Clear(); foreach (DirectoryInfo childDirectoryInfo in directoryInfo.GetDirectories()) { TreeNode SubNode = new TreeNode(childDirectoryInfo.Name.ToString()); SubNode.ImageIndex = 0; TV.Nodes.Add(SubNode); SubNode.Nodes.Add(new TreeNode("")); } } else { SelectNode = TV.SelectedNode; if (TV.SelectedNode == null) SelectNode = node; SelectNode.Nodes.Clear(); foreach (DirectoryInfo childDirectoryInfo in directoryInfo.GetDirectories()) { TreeNode SubNode = new TreeNode(childDirectoryInfo.Name.ToString()); SubNode.ImageIndex = 0; SelectNode.Nodes.Add(SubNode); SubNode.Nodes.Add(new TreeNode("")); n = 1; } } if (n == 0) SelectNode.ImageIndex = 0; } catch (Exception ex) { } } private void comboBox_Disk_TextChanged(object sender, EventArgs e) { SubForders(((ComboBox)sender).Text, treeView1, new TreeNode("")); } private void F_数据输入输出_Load(object sender, EventArgs e) { string appUrl = ""; appUrl = Application.StartupPath; img1 = Image.FromFile(appUrl + "/Resource/00.png"); img2 = Image.FromFile(appUrl + "/Resource/01.png"); img3 = Image.FromFile(appUrl + "/Resource/03.png"); this.imageList1.Images.Add(img1); this.imageList1.Images.Add(img2); this.imageList1.Images.Add(img3); Imadir = GKTAClass.UpAndDown_Dir(System.AppDomain.CurrentDomain.BaseDirectory); Imadir = GKTAClass.UpAndDown_Dir(Imadir); Imadir = GKTAClass.UpAndDown_Dir(Imadir); //panel_Title.BackgroundImage = Image.FromFile(Imadir + "\\Image\\" + ModuleClass.FrmAffairClass.Redact_T + this.Tag.ToString() + ".JPG"); m = int.Parse(this.Tag.ToString()); switch (m) { case 0: { break; } case 1: { break; } case 2: { break; } } Drive_Name(comboBox_Disk); } //private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) //{ // dir = comboBox_Disk.Text + e.Node.FullPath; // dir_Ok = dir; // e.Node.SelectedImageIndex = e.Node.ImageIndex; // SubForders(dir, treeView1, e.Node); //} private void Cancel_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel;//将当前窗体的对话框返回值设为Cancel Close(); } private void treeView1_AfterExpand(object sender, TreeViewEventArgs e) { e.Node.ImageIndex = 1; SubForders(comboBox_Disk.Text + e.Node.FullPath, treeView1, e.Node); } private void treeView1_AfterCollapse(object sender, TreeViewEventArgs e) { e.Node.ImageIndex = 0; } private void OK_Click(object sender, EventArgs e) { if (textBox1.Text == "") { MessageBox.Show("请选择输出位置!"); return; } if (dir_Ok == "") dir_Ok = textBox1.Text; switch (m) { case 0: { GKTAClass.Folder_Handle(Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D + "\\" + GKTAClass.Files_Name(dir_Ok, 1), dir_Ok, "data", 3); break; } case 1: { GKTAClass.Folder_Handle(dir_Ok + "\\" + GKTAClass.Files_Name(Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D, 1), Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D, "", 3); break; } case 2: { Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D = Utility.uploadpath + "\\Gkt\\" + Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D + "\\" + Cyberpipe.GKT_logicfile.GKT_Affair.Redact_N; if (File.Exists(dir_Ok+"\\"+GKTAClass.Files_Name(Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D, 1)) == true) { if (MessageBox.Show("文件夹下有同名文件,是否替换?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) break; } byte[] file = UDF.Down(Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D); FileStream pFileSream = new FileStream(dir_Ok + "\\" + Cyberpipe.GKT_logicfile.GKT_Affair.Redact_N, FileMode.OpenOrCreate); pFileSream.Write(file, 0, file.Length); pFileSream.Close(); if (File.Exists(dir_Ok + "\\" + GKTAClass.Files_Name(Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D, 1)) == true) { MessageBox.Show("文件导出成功!"); } // GKTAClass.Folder_Handle(dir_Ok + "\\" + GKTAClass.Files_Name(Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D, 0), Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D, "", 0); break; } } DialogResult = DialogResult.OK;//将当前窗体的对话框返回值设为OK } private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { dir_Ok = comboBox_Disk.Text + e.Node.FullPath; //dir = comboBox_Disk.Text + e.Node.FullPath; e.Node.SelectedImageIndex = e.Node.ImageIndex; } string tempstr = ""; private void button1_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) //打开文件夹对话框 { textBox1.Text = folderBrowserDialog1.SelectedPath; //显示选择的文件夹路径 tempstr = folderBrowserDialog1.SelectedPath; //存储选择的文件夹路径 //Thread thdAddFile = new Thread(new ThreadStart(SetAddFile)); //创建一个线程 //thdAddFile.Start(); //执行当前线程 } } public delegate void AddFile(); //定义委托线程 public void SetAddFile() { this.Invoke(new AddFile(RunAddFile)); //对指定的线程进行托管 } public void RunAddFile() { TreeNode TNode = new TreeNode(); //实例化一个线程 Files_Copy(treeView1, tempstr, TNode, 0); Thread.Sleep(0); //持起主线程 //thdAddFile.Abort(); //执行线程 } 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(); //获取文件夹中所有文件和文件夹 foreach (FileSystemInfo FSys in files) //对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作 { 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; } } public string UpAndDown_Dir(string dir) { string Change_dir = ""; //定义字符串变量 Change_dir = Directory.GetParent(dir).FullName; //返回当前路径的父级路径 return Change_dir; } } }