c# 新手 ,请问怎么找出一个文件夹中内容变动过的文件,复制到另一个文件夹

时间:2020-12-31 21:04:07
c# 新手 ,请问怎么找出一个文件夹中内容变动过的文件,复制到另一个文件夹

10 个解决方案

#1


参考http://www.cnblogs.com/springyangwc/archive/2011/08/27/2155547.html

#2


你这个变动的参照点是什么呢

#3


FileInfo.CreationTime  文件的创建时间
FileInfo.LastWriteTime 文件的上次写操作时间 
两者不同,可视为被改动了

#4


也可以先过去文件md5,发现变动后用新md5再次验证。

#5


引用 3 楼 xuzuning 的回复:
FileInfo.CreationTime  文件的创建时间
FileInfo.LastWriteTime 文件的上次写操作时间 
两者不同,可视为被改动了


你好,这样写对不对?

      private void CopyDifFile(string srcPath, string aimPath)
        {
            DirectoryInfo directory = new DirectoryInfo(srcPath);
            var files = directory.GetFiles()
             .Where(file => file.LastWriteTime != file.CreationTime);
            string s = "";
          
            foreach (FileInfo file in files)
            {
                s = file.Name;
                if (s != "")
                {
                    MessageBox.Show("文件已存在");
                    break;
                    //CopyDir(srcPath + s, aimPath + Path.GetFileName(s));
                }
                // 否则直接Copy文件
                else
                {
                    MessageBox.Show("文件" + s + "更改");
                    System.IO.File.Copy(srcPath + Path.GetFileName(s), aimPath + Path.GetFileName(s), true);
                }
            }
        }

#6


引用 楼主 qq_34784294 的回复:
c# 新手 ,请问怎么找出一个文件夹中内容变动过的文件,复制到另一个文件夹

监测文件变化可以使用FileSystemWatcher
使用方法参考这个或者自行搜索
https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
因为涉及IO操作,所以相关文件夹的权限设置是少不了的

#7


想找出srcpath 中所有变动的文件 复制到 aimpath 中,上面代码有错误,不知道怎么改,求帮助

#8


这样用
            var p = new FileInfo("1.txt");
            Console.WriteLine(p.CreationTime);
            Console.WriteLine(p.LastWriteTime);

#9




       private void CopyDifFile(string srcPath, string aimPath)
        {
            DirectoryInfo directory = new DirectoryInfo(srcPath);
           var files = directory.GetFiles()
             .Where(file => file.LastWriteTime != file.CreationTime);
            //FileInfo file = new FileInfo(srcPath);
            string s = "";
            //fi.CopyTo(aimPath, true);
            foreach (FileInfo file in files)
            {
                s = file.Name;
                if (s != "")
                {
                    MessageBox.Show("文件已存在");
                    break;
                    //file.CopyTo(aimPath,true);
                    //CopyDir(srcPath + s, aimPath + Path.GetFileName(s));
                }
                // 否则直接Copy文件
                else
                {
                    MessageBox.Show("文件" + s + "更改");
                    System.IO.File.Copy(srcPath + Path.GetFileName(s), aimPath + Path.GetFileName(s), true);
                }
            }
        }

#10


引用 8 楼 xuzuning 的回复:
这样用
            var p = new FileInfo("1.txt");
            Console.WriteLine(p.CreationTime);
            Console.WriteLine(p.LastWriteTime);


这样写是输出文件的什么属性? 那怎么复制到另一个文件夹呢?

#1


参考http://www.cnblogs.com/springyangwc/archive/2011/08/27/2155547.html

#2


你这个变动的参照点是什么呢

#3


FileInfo.CreationTime  文件的创建时间
FileInfo.LastWriteTime 文件的上次写操作时间 
两者不同,可视为被改动了

#4


也可以先过去文件md5,发现变动后用新md5再次验证。

#5


引用 3 楼 xuzuning 的回复:
FileInfo.CreationTime  文件的创建时间
FileInfo.LastWriteTime 文件的上次写操作时间 
两者不同,可视为被改动了


你好,这样写对不对?

      private void CopyDifFile(string srcPath, string aimPath)
        {
            DirectoryInfo directory = new DirectoryInfo(srcPath);
            var files = directory.GetFiles()
             .Where(file => file.LastWriteTime != file.CreationTime);
            string s = "";
          
            foreach (FileInfo file in files)
            {
                s = file.Name;
                if (s != "")
                {
                    MessageBox.Show("文件已存在");
                    break;
                    //CopyDir(srcPath + s, aimPath + Path.GetFileName(s));
                }
                // 否则直接Copy文件
                else
                {
                    MessageBox.Show("文件" + s + "更改");
                    System.IO.File.Copy(srcPath + Path.GetFileName(s), aimPath + Path.GetFileName(s), true);
                }
            }
        }

#6


引用 楼主 qq_34784294 的回复:
c# 新手 ,请问怎么找出一个文件夹中内容变动过的文件,复制到另一个文件夹

监测文件变化可以使用FileSystemWatcher
使用方法参考这个或者自行搜索
https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
因为涉及IO操作,所以相关文件夹的权限设置是少不了的

#7


想找出srcpath 中所有变动的文件 复制到 aimpath 中,上面代码有错误,不知道怎么改,求帮助

#8


这样用
            var p = new FileInfo("1.txt");
            Console.WriteLine(p.CreationTime);
            Console.WriteLine(p.LastWriteTime);

#9




       private void CopyDifFile(string srcPath, string aimPath)
        {
            DirectoryInfo directory = new DirectoryInfo(srcPath);
           var files = directory.GetFiles()
             .Where(file => file.LastWriteTime != file.CreationTime);
            //FileInfo file = new FileInfo(srcPath);
            string s = "";
            //fi.CopyTo(aimPath, true);
            foreach (FileInfo file in files)
            {
                s = file.Name;
                if (s != "")
                {
                    MessageBox.Show("文件已存在");
                    break;
                    //file.CopyTo(aimPath,true);
                    //CopyDir(srcPath + s, aimPath + Path.GetFileName(s));
                }
                // 否则直接Copy文件
                else
                {
                    MessageBox.Show("文件" + s + "更改");
                    System.IO.File.Copy(srcPath + Path.GetFileName(s), aimPath + Path.GetFileName(s), true);
                }
            }
        }

#10


引用 8 楼 xuzuning 的回复:
这样用
            var p = new FileInfo("1.txt");
            Console.WriteLine(p.CreationTime);
            Console.WriteLine(p.LastWriteTime);


这样写是输出文件的什么属性? 那怎么复制到另一个文件夹呢?