여기에 대한 내 대답은 : 복사본 폴더 내용을 이동하지 않습니다. 대상이 존재하지 않으면 코드가 더 명확 해집니다. 기술적으로, 존재하지 않는 파일에 대한 fileinfo를 작성하면 LastTimeTime.Min의 LastWriteTime이됩니다. 따라서 은이되지만 가독성은 약간 떨어집니다. 이 테스트 된 코드가 누군가를 돕기를 바랍니다.
** 편집 : 원본을 훨씬 더 유연하게 업데이트했습니다. 이 스레드를 기반으로하기 때문에 여기에 업데이트를 게시했습니다. 마스크를 사용할 때 하위 디렉토리가 생성되지 않음 하위 폴더에 일치하는 파일이 포함되어 있지 않은 경우. 확실히 더 강력한 오류 처리기가 앞으로있을 것입니다. :)
public void CopyFolderContents(string sourceFolder, string destinationFolder)
{
CopyFolderContents(sourceFolder, destinationFolder, "*.*", false, false);
}
public void CopyFolderContents(string sourceFolder, string destinationFolder, string mask)
{
CopyFolderContents(sourceFolder, destinationFolder, mask, false, false);
}
public void CopyFolderContents(string sourceFolder, string destinationFolder, string mask, Boolean createFolders, Boolean recurseFolders)
{
try
{
if (!sourceFolder.EndsWith(@"\")){ sourceFolder += @"\"; }
if (!destinationFolder.EndsWith(@"\")){ destinationFolder += @"\"; }
var exDir = sourceFolder;
var dir = new DirectoryInfo(exDir);
SearchOption so = (recurseFolders ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);
foreach (string sourceFile in Directory.GetFiles(dir.ToString(), mask, so))
{
FileInfo srcFile = new FileInfo(sourceFile);
string srcFileName = srcFile.Name;
// Create a destination that matches the source structure
FileInfo destFile = new FileInfo(destinationFolder + srcFile.FullName.Replace(sourceFolder, ""));
if (!Directory.Exists(destFile.DirectoryName) && createFolders)
{
Directory.CreateDirectory(destFile.DirectoryName);
}
if (srcFile.LastWriteTime > destFile.LastWriteTime || !destFile.Exists)
{
File.Copy(srcFile.FullName, destFile.FullName, true);
}
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message + Environment.NewLine + Environment.NewLine + ex.StackTrace);
}
}
이 창 또는 웹 접근 ?? – user1102001
@ user1102001 windows –
배치 파일을 사용하면 더 쉽게 찾을 수 있습니다. xcopy 명령을 사용하면이 작업을 간단하게 처리 할 수 있습니다. – JMK