| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 564 人关注过本帖
标题:帮我看一下这代码
只看楼主 加入收藏
mipeng
Rank: 2
等 级:论坛游民
帖 子:58
专家分:13
注 册:2009-4-4
结帖率:87.5%
收藏
 问题点数:0 回复次数:3 
帮我看一下这代码
程序代码:
        Thread thd = null;
        string thisPath = "";
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog op = new OpenFileDialog();
            if (op.ShowDialog() == DialogResult.OK)
            {
                thisPath = op.FileName;
                thd = new Thread(new ThreadStart(th));
                thd.Start();
            }
        }
        private void th()
        {
                FileStream fs = new FileStream(thisPath, FileMode.Open, FileAccess.Read);
                long length = fs.Length;
                FileStream newfs = new FileStream("C:\\aa.rar", FileMode.Create, FileAccess.Write);
                byte[] bytes = new byte[Convert.ToInt32(fs.Length)];
                progressBar1.Maximum = 100;
                progressBar1.Value = 0;
                int post = 0;
                long of = 0;
                while (post < length)
                {
                    int i = fs.Read(bytes, post, 1);
                    newfs.Write(bytes, post, 1);
                    if (post > 0)
                    {
                        of = fs.Length / post;
                        of = 100 - of + 1;
                        if (of > 0 )
                        {
                            progressBar1.Value = Convert.ToInt32(of);
                        }
                    }
                    post = post + 1;
                }

                newfs.Close();
                newfs.Dispose();
                fs.Close();
                fs.Dispose();
             
                MessageBox.Show("传输成功");
            
        }
这样的文件传输好吗?
每次只发送1个字节


还有一个问题,执行时滚动条一开始走的很快,到最后就慢了,当到100%还要等上一会才提示MessageBox.Show("传输成功");这是为什么?
搜索更多相关主题的帖子: 代码 
2010-01-28 12:41
mipeng
Rank: 2
等 级:论坛游民
帖 子:58
专家分:13
注 册:2009-4-4
收藏
得分:0 
为什么没人理我?


最后还是自己解决了。。。。。。
2010-01-28 20:46
baikil
Rank: 10Rank: 10Rank: 10
来 自:X星球
等 级:青峰侠
威 望:4
帖 子:282
专家分:1580
注 册:2009-7-20
收藏
得分:0 
说说个人观点:
FileStream fs = new FileStream(thisPath, FileMode.Open, FileAccess.Read);
                long length = fs.Length;
                FileStream newfs = new FileStream("C:\\aa.rar", FileMode.Create, FileAccess.Write);
                byte[] bytes = new byte[Convert.ToInt32(fs.Length)];  //你这个数组也太大了吧!!
                progressBar1.Maximum = 100;
                progressBar1.Value = 0;
                int post = 0;
                long of = 0;
                while (post < length)
                {
                    int i = fs.Read(bytes, post, 1);  //每次你都读一个,
                    newfs.Write(bytes, post, 1);        // 每次你都写一个,
                    if (post > 0)
                    {
                        of = fs.Length / post;
                        of = 100 - of + 1;
                        if (of > 0 )
                        {
                            progressBar1.Value = Convert.ToInt32(of);
                        }
                    }
                    post = post + 1;
                }

                newfs.Close();
                newfs.Dispose(); //上有关闭,不必手动释放
                fs.Close();
                fs.Dispose();    //.....等上一会才提示MessageBox.Show("传输成功");这是为什么?
你已经定义这么大的一个数,为何每次只读一个,可以一次写入啊,文件大就会出错了!



自创QQ群64885635,方便C#学习交流.希望各项工作路好学都好入!
2010-01-29 09:54
caijiawei
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:162
专家分:101
注 册:2008-10-7
收藏
得分:0 
支持3楼的!
写代码最好写上注释这样对你会很好!

不懂就要问,我从不感觉请教他人是一件很丢人的事!
2010-01-31 23:22
快速回复:帮我看一下这代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032398 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved