문제

StreamReader를 사용하여 텍스트 파일의 데이터를 읽는 C# 코드가 있습니다. 하나의 컴퓨터에서 텍스트 파일에서 데이터가 다른 텍스트 파일로 삭제되거나 대체 된 후에도 데이터를 읽을 수 있습니다. 파일은 파일이 Windows Explorer에 있지 않은 경우에도 파일이 존재한다고보고합니다. 그러나 다른 컴퓨터에서는이 동작이 발생하지 않습니다. 두 컴퓨터 모두 Vista 비즈니스 및 .NET 2.0.50727 SP2를 실행하고 있습니다.

우리는 해상도없이 기계를 다시 시작하려고 시도했습니다.

이것이 가능한 방법과 가능한 솔루션에 대한 정보에 대한 이해가 있습니까?

고마워요, 앨런

도움이 되었습니까?

해결책

이것은 A가 될 수 있습니다 폴더 가상화 문제?

다른 팁

에서 MSDN

존재 메소드는 경로 유효성 검사에 사용해서는 안되며,이 메소드는 단지 경로에 지정된 파일이 존재하는지 확인합니다.
다른 프로세스는 Exist Method를 호출하는 시간 사이에 파일로 무언가를 수행하고 Delete와 같은 파일에서 다른 작업을 수행 할 수 있습니다. 권장되는 프로그래밍 관행은 ExistS 메소드를 래핑하는 것입니다. 파일에서 가져온 작업은 예제에 표시된대로 캐치 블록을 시도합니다. 이것은 잠재적 충돌의 범위를 좁히는 데 도움이됩니다. ExistS 메소드는 파일을 사용할 수 있도록하는 데 도움이 될 수 있으며이를 보장 할 수 없습니다.

파일이 삭제되기 전에 읽기 위해 열려 있습니까? 그렇다면 파일 시스템이 다른 방법으로 놓은 후에도 열린 파일에서 여전히 읽을 수있는 것은 예상치 못한 일이 아닙니다.

답장: File.Exists():

File.Exists 본질적으로 경주 조건이 발생하기 쉽습니다. 일부 작업을 수행하기 전에 파일이 존재하거나 존재하지 않는지 확인하는 독점적 인 방식으로 사용해서는 안됩니다. 이 실수로 인해 소프트웨어 내에서 보안 결함이 발생할 수 있습니다.

오히려, 열린 실제 파일 작업에서 발생할 수있는 예외를 항상 처리하고 입력이 열리면 입력을 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top