设为首页 收藏本站
查看: 1011|回复: 0

ftp客户端程序

[复制链接]

尚未签到

发表于 2015-5-29 07:38:40 | 显示全部楼层 |阅读模式
  最近做一个ftp客户端程序,有用到这些代码。与现在ftp客户端最大不同是,可以根据更新时间以及文件后缀名来过滤文件这对一个项目经理来说无疑可以节省很多时间、精力。
  public partial class mainForm : Form
    {
        string path;    //目录名 也可以用相当路径
        string filter = "*.*";        //文件类型
        int m_numFiles = 0;        //文件总数
        ArrayList m_pathList = new ArrayList();//包含所有文件路径的数组
        string[] files;            //所有文件名
        DateTime time;

        string m_strWinSCPPath;

        public mainForm()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            m_strWinSCPPath = System.IO.Path.Combine(RunPath, "WinSCP");
            SetDateTime.Value =DateTime.Parse( DateTime.Now.ToString("yyyy-MM-dd 00:00:00"));
            
        }

        private void initDate()
        {
            this.lvList.Visible = true;
            ParseDirectory(path, "*.*");
            files = CreatePathList();        //生成文件名数组

            if (files == null)
            {
                throw new Exception(String.Concat("No file found in ", path));
            }
        }

        private string[] CreatePathList()
        {
            if (m_numFiles  0)
            {
                txtMessage.Text = path;
                Application.DoEvents();
                string[] files = Directory.GetFiles(path,"*"+ filte[j-1]);


                if (files.Length > 0)
                {
                    foreach (string filename in files)
                    {

                        FileInfo inf = new FileInfo(filename);


                        float value = inf.Length / 1024 / 1024;
                        m_numFiles += files.Length;
                        m_pathList.Add(files);

                        if (inf.LastWriteTime > time)
                        {
                            //foreach (string str in filte)
                           // {
                               // if (inf.Extension == str)
                                //{
                                    ListViewItem lvItem = new ListViewItem();
                                    lvItem.Text = inf.Name;
                                    lvItem.Checked = true;
                                    lvItem.Tag = inf.DirectoryName.ToString() + """" + inf.Name.ToString();
                                    lvItem.SubItems.Add(inf.DirectoryName.ToString() + """" + inf.Name.ToString());
                                    lvItem.SubItems.Add(inf.LastWriteTime.ToString());
                                    lvList.Items.Add(lvItem);
                                   
                               // }
                           // }
                        }
                    }
                  
                }
              j--;
            }

            }
            catch (Exception e)
            {

                //throw;
            }
        }

        
        private void btnUpload_Click(object sender, EventArgs e)   //上传开始
        {
            string strWinSCP = System.IO.Path.Combine(m_strWinSCPPath, "WinSCP.com");
            if (!System.IO.File.Exists(strWinSCP))
            {
                MessageBox.Show("找不到" + strWinSCP);
                return;
            }

            string strScriptFile = CreateScriptFile();
            //return;

            ProcessStartInfo start = new ProcessStartInfo(strWinSCP);
            start.Arguments = "/script=" + System.IO.Path.Combine(m_strWinSCPPath, strScriptFile);  //设置命令参数
            start.CreateNoWindow = true;//不显示dos命令行窗口
            start.RedirectStandardOutput = true;//
            start.RedirectStandardInput = true;//
            start.UseShellExecute = false;//是否指定操作系统外壳进程启动程序
            Process p = Process.Start(start);
            StreamReader reader = p.StandardOutput;//截取输出流
            string line = reader.ReadLine();//每次读取一行
            txtMessage.Text = "开始上传...";
            while (!reader.EndOfStream)
            {
                txtMessage.Text = line + ""r"n" + txtMessage.Text;
                Application.DoEvents();
                System.Threading.Thread.Sleep(100);
                line = reader.ReadLine();
            }
            p.WaitForExit();//等待程序执行完退出进程
            p.Close();//关闭进程
            reader.Close();//关闭流
            System.IO.File.Delete(strScriptFile);
            txtMessage.Text ="上传完成."r"n" + txtMessage.Text;
        }

        private string CreateScriptFile()
        {
            string strFileName =System.IO.Path.Combine(m_strWinSCPPath, DateTime.Now.ToString("yyyyMMddhhmmss") + ".txt");
            const string SCRIPT_HEARD = "option batch on "r"noption confirm off "r"nopen {0}"r"n{1}"r"nclose"r"nexit";
            string strFilelist="";
            foreach (ListViewItem item in lvList.Items)
            {
                if (item.Checked)
                {
                    string strLocalPath = item.SubItems[1].Text;
                    string strRemotePath = strLocalPath.Replace(lab.Text, "");
                    strRemotePath = strRemotePath.Replace("""", "/");
                    strFilelist += "put """ + strLocalPath + """ """ + strRemotePath + """"r"n" ;
                }
            }

            string strScript = "";
            if (!string.IsNullOrEmpty(strFilelist))
            {
                strScript = string.Format(SCRIPT_HEARD, txtSession.Text, strFilelist);
            }
            System.IO.File.WriteAllText(strFileName, strScript);
            return strFileName;
        }

        private void btnSelectDirectory_Click(object sender, EventArgs e)
        {
            if ( fbdSelect.ShowDialog()==DialogResult.OK)
            {
                if (!string.IsNullOrEmpty( fbdSelect.SelectedPath))
                {
                    path = fbdSelect.SelectedPath.ToString();
                    lab.Text = path;
                    btnShowList.PerformClick();
                }
            }
        }

      

        private void btnOk_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(lab.Text))
            {
                btnSelectDirectory.PerformClick();
                return;
            }
            btnUpload.Enabled = false;
            this.lvList.Items.Clear();

            initDate();
            //lvList.CheckBoxes = true;
            //lvList.Items[0].Selected = true;
            //this.btnUpload.Visible = true;
            txtMessage.Text = "列表完成.";
            btnUpload.Enabled = true;
        }


        string m_strRunPath = "";
        private string RunPath
        {
            get
            {
                if (string.IsNullOrEmpty(m_strRunPath))
                {
                    m_strRunPath = Application.StartupPath;
                }
                return m_strRunPath;
            }

        }

        private void TxtStyle_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar==13)
            {
                btnShowList.PerformClick();
            }
        }

        private void btnCreateSession_Click(object sender, EventArgs e)
        {
            string strFile = System.IO.Path.Combine(m_strWinSCPPath, "WinSCP.exe");
            if (System.IO.File.Exists(strFile))
            {
                System.Diagnostics.Process.Start(strFile );
            }
            else
            {
                MessageBox.Show("找不到" + strFile);
            }
            
        }

    }
}


  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71645-1-1.html 上篇帖子: FTP script 下篇帖子: .net2下简单的FTP应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表