문제

내 프로젝트에서는 USB 장치에서 임시 파일을 만들어야합니다. 그래서 나는 같은 코드를 사용했습니다

this.fcommandHandler = new FileStream(TempFileName,
FileMode.CreateNew, FileAccess.ReadWrite,
FileShare.ReadWrite, 512, FileOptions.DeleteOnClose);

잘 작동합니다. 그러나 문제는 버퍼링이없는 것처럼 파일 옵션을 하나 더 사용하고 싶다는 것입니다.

private const FileOptions FILE_FLAG_NO_BUFFERING = (FileOptions)0x20000000;

this.fcommandHandler = new FileStream(TempFileName,
FileMode.CreateNew, FileAccess.ReadWrite,
FileShare.ReadWrite, 512, FileOptions.DeleteOnClose & FILE_FLAG_NO_BUFFERING);

그러나 폐쇄 후 파일을 삭제하지 않습니다. 도와주세요.

도움이 되었습니까?

해결책

사용해야합니다 | 대신에 &.

이것들은 이진 깃발이며, 당신이 말할 때 &, 당신은 효과적으로 그들을 모두 마스킹하여 전혀 옵션이 없습니다.

다른 팁

사용 FileOptions.DeleteOnClose | FILE_FLAG_NO_BUFFERING 그만큼 & 그들을 취소합니다.

FILE_FLAG_NO_BUFFERING & FileOptions.DeleteOnClose 보고 FileOptions.None

시도해보십시오 WriteThrough |.를 사용하여 목록에 플래그 운영자. 이것 좀 봐 KB 사용 요구 사항에 FILE_FLAG_NO_BUFFERING. MS 가이 깃발을 열거에 포함시키지 않았다는 것이 흥미 롭습니다. 이유가 있습니까? WriteThrough 이 시나리오에서 필요한 것을하지 않습니까? 보안 데이터를 작성하려고합니까?

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