C# 移动文件完成后 如何知道 操作完成

gongjie416 2013-11-08 04:36:04
点击按钮进去文件移动 ,当所有源目录所有文件移动到目标目录后,如何才能得知移动完成
这是移动方法的源码
private void CopyFiles(string varFromDirectory, string varToDirectory)
{
Directory.CreateDirectory(varToDirectory);


if (!Directory.Exists(varFromDirectory)) return;


string[] directories = Directory.GetDirectories(varFromDirectory);


if (directories.Length > 0)
{
foreach (string d in directories)
{
CopyFiles(d, varToDirectory + d.Substring(d.LastIndexOf("\\")));
}
}





string[] files = Directory.GetFiles(varFromDirectory);


if (files.Length > 0)
{
foreach (string s in files)
{
File.Copy(s, varToDirectory + s.Substring(s.LastIndexOf("\\")));
}
}

}
...全文
559 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmzoe 2013-11-13
  • 打赏
  • 举报
回复
上面是文件监测中的一个代码片断,贴到处以备不时之需
mmzoe 2013-11-13
  • 打赏
  • 举报
回复
int i = 0; bool bCompleted=false; do { try { System.Threading.Thread.Sleep(1000); File.Move(path, path); bCompleted = true; } catch (Exception ex) { i++; continue; } } while (!bCompleted);
emailtome 2013-11-08
  • 打赏
  • 举报
回复
var wshShell = new WshShell(); object windowStyles = 0; object r= true; var run = wshShell.Run(@"cmd /c p1 p2 ",ref windowStyles,ref r); if (run != 0) { // }
  • 打赏
  • 举报
回复
        delegate void CopyFileEventHandler(string OldFileName, string NewFileName);

        void CopyFile(string OldFileName, string NewFileName)
        {
            new CopyFileEventHandler((string sourceFileName, string destFileName) =>
            {
                File.Copy(sourceFileName, destFileName);
            }).BeginInvoke(OldFileName, NewFileName, new AsyncCallback((IAsyncResult Result) =>
            {
                MessageBox.Show("复制完成!");
            }), null);            
        }
异步执行,复制完了通知
gongjie416 2013-11-08
  • 打赏
  • 举报
回复
或者有没有高手帮我改成 多线程实现他的
烟波钓 2013-11-08
  • 打赏
  • 举报
回复
引用 楼主 gongjie416 的回复:
点击按钮进去文件移动 ,当所有源目录所有文件移动到目标目录后,如何才能得知移动完成 这是移动方法的源码 private void CopyFiles(string varFromDirectory, string varToDirectory) { Directory.CreateDirectory(varToDirectory); if (!Directory.Exists(varFromDirectory)) return; string[] directories = Directory.GetDirectories(varFromDirectory); if (directories.Length > 0) { foreach (string d in directories) { CopyFiles(d, varToDirectory + d.Substring(d.LastIndexOf("\\"))); } } string[] files = Directory.GetFiles(varFromDirectory); if (files.Length > 0) { foreach (string s in files) { File.Copy(s, varToDirectory + s.Substring(s.LastIndexOf("\\"))); } } }
1.方法能否修改一下签名,返回bool,用于标记是否移动成功 2.方法的调用方是同步调用的话,直接判断移动成功后进行后续操作 3.方法的调用方是异步调用话话,调用方加上回调函数,后续操作放到回调函数中
熙风 2013-11-08
  • 打赏
  • 举报
回复
  if (files.Length > 0)
            {
                foreach (string s in files)
                {
                    File.Copy(s, varToDirectory + s.Substring(s.LastIndexOf("\\")));
                }
            }

这个执行完了不就copy完了? 直接再if后面接着操作就行了
gongjie416 2013-11-08
  • 打赏
  • 举报
回复
要判断他移动结束是想在他结束时进行 循环插入数据库操作,这一步要写在哪里不清楚,
gongjie416 2013-11-08
  • 打赏
  • 举报
回复
可能我没说清楚吧, 单我点击这个按钮时他开始移动,所有的操作完成后,是要去硬盘上看是否完成的,我是想在代码给自己提示,
IEEE_China 2013-11-08
  • 打赏
  • 举报
回复
通常你try...catch...,没有异常,基本上就移动成功了。
IEEE_China 2013-11-08
  • 打赏
  • 举报
回复

 string filepath="你的文件路径";
        if (System.IO.File.Exists(filepath))
        {
            //存在
        }
        else { 
        //不存在
        }
失落的神庙 2013-11-08
  • 打赏
  • 举报
回复
引用 4 楼 51Crack 的回复:
CopyFiles下一行就是移动完了
+10086
WM_JAWIN 2013-11-08
  • 打赏
  • 举报
回复
我的肾啊,你这个函数执行完了,不就完了
gongjie416 2013-11-08
  • 打赏
  • 举报
回复
如何在代码里判断呢
51Crack 2013-11-08
  • 打赏
  • 举报
回复
CopyFiles下一行就是移动完了
公西雒 2013-11-08
  • 打赏
  • 举报
回复
加个判断不行么?
IEEE_China 2013-11-08
  • 打赏
  • 举报
回复
不管移动到哪里,看看它是不是移动过去了,或者说看看目标文件夹是否存在这个被你移动的对象了,不就知道答案了么?
  • 打赏
  • 举报
回复
不清楚,我是来看头像的

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧