원본 파일이 잠긴 상태에서 파일을 잠그고 복사하고 사본을 수정하고 원본 파일로 다시 저장하는 방법에 대한 도움이 필요합니다. 여기 잠긴 파일/스트림으로 복사/이동
는 현재의 흐름입니다 : 사용자가 파일, 임시 폴더에 응용 프로그램 복사본을 열고는 다시 임시 파일을 저장할 때_lockStream = new FileStream(Path, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);
다음 줄에 원본 파일을 잠급니다 원본 파일에, 현재 나는 다음과 같은 루틴 (대상 = _lockStream 및 소스 = 임시 파일의 스트림) 사용하고 있습니다 :
public static void Copy(Stream source, Stream destination, int bufferSize)
{
int readed = 0;
byte[] buffer = new byte[bufferSize];
destination.SetLength(source.Length);
destination.Position = 0;
while ((readed = source.Read(buffer, 0, buffer.Length)) > 0)
{
destination.Write(buffer, 0, readed);
}
destination.Flush();
}
내가 대신 File.Copy를 사용하는 것을 선호를,하지만 난 방법을 모르는 잠긴 fi로 작동하도록하십시오. 파일을 응용 프로그램이 잠근 경우에도 그리고 더 나쁜 것은 내 방법이 안전하지 않기 때문에 응용 프로그램이나 시스템이 중간에 충돌하면 원본 파일이 손상된 것입니다. 더 정확한 접근 방식은 같은 폴더에 복사 한 다음 이동 (또는 단순히 이동)하는 것이지만 원본 파일에 잠금을 유지하는 방법을 모르겠다 고 생각합니다.
그럼 안전하게하기 위해 파일 잠금을 해제하고 File.Copy를 사용한 다음 다시 잠금을 얻으십시오. 작동하지만 몇 밀리 초 동안 파일 잠금이 해제되어 다른 프로세스에서 잠글 수 있습니다.
그런 일을하는 가장 좋은 방법은 무엇입니까? 위해
. 디버거의 복사 방법에서 멈추고 나가면 대상 스트림이 부분적으로 덮어 씁니다. – xll