2011-11-26 2 views
7

다른 앱에서 작성한 일부 텍스트 파일을 복사하려고하지만 다른 앱을 방지하기 위해 아무 것도하고 싶지 않습니다. 이 파일에 쓰기에서.File.Copy는 다른 앱이 파일에 쓰지 못하도록합니까?

System.IO namespace, C#, .NET Framework 2.0에서 File.Copy을 사용하고 있습니다.

MSDN의 설명서를 확인했지만 File.Copy이 사용하는 방법에 대해서는 특별히 언급하지 않았습니다. 관리되지 않는 API 호출에 대한 래퍼입니까?

File.Copy 어떤 방식 으로든 복사되는 파일을 잠 그거나 차단 하시겠습니까?

미리 감사드립니다.

+0

@Joey : 매트가 대상 파일이 아니라 소스 파일을 참조한다고 가정합니다. 여전히 다른 프로세스가 파일을 쓰는 동안 파일을 복사하면 파일의 종류와 복사 목적에 따라 이상한 결과가 발생할 수 있습니다. –

답변

1

.Net Reflector (또는 다른 디 컴파일 도구)을 사용하여 메서드의 내부 구조를 볼 수 있습니다.

사실은 System.IOFile.Copy이 파일을 복사 할 때 Microsoft.Win32.Win32Native 라이브러리를 사용함을 알 수 있습니다. Microsoft.Win32.Win32Native 모든 Win32 네이티브 작업에 대한 CLR 래퍼입니다.

+0

답장을 보내 주셔서 감사합니다. – netcat

+0

Joey, 예 내가 복사 할 대상 파일이 아니라 원본 파일을 참조하고 있습니다. Schglurps, 이것으로 만료되었습니다. 다른 앱에서 파일 공유가 없음으로 설정된 파일 스트림을 열었습니다. 어쨌든 File.Copy를 사용하여 파일을 복사 할 수있었습니다. Sailer, thanks. 감사합니다. 왜 내가 이것을 생각하지 않았는지 모르겠다. 반사판의 메서드를 살펴보고 win32 API 호출을 읽습니다. – netcat

2

다른 응용 프로그램이 FileShare.None을 지정하여 파일을 만드는 경우 UnauthorizedAccessException을 수신하게됩니다. 그래서 당신은 당신의 app에서이 특별한 예외를 처리해야한다고 생각합니다.

+0

내 질문을 명확하게 해 주신 Fredrik, 고맙습니다. – netcat