반응형
메모장이 다 이긴다고요?
Windows Server 2012 R2 시스템에서 Kotlin 프로그램은 다음과 같이 파일에 대한 배타적 잠금을 유지하기 위해 사용합니다.
val fileRw = RandomAccessFile(file, "rw")
fileRw.channel.tryLock()
이 잠금이 설정되어 있으면 다음 방법으로 파일을 열 수 없습니다.
- 워드패드
- 메모장++
C#을 사용하여 프로그래밍 방식으로, 임의의 값에 대해
FileShare
:using (var fileStream = new FileStream(processIdPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (var textReader = new StreamReader(fileStream)) { textReader.ReadToEnd(); }
명령줄에서 명령어는 다음과 같습니다.
C:\some-directory>type file.txt The process cannot access the file because another process has locked a portion of the file.
Internet Explorer(네, 필사적이었어요)
메모장으로 열 수 있어요.
어떻게 메모장이 다른 어떤 것도 열 수 없는 잠긴 파일을 열 수 있을까요?
메모장은 다른 편집자가 사용한 "일반적인" 파일 읽기 메커니즘을 사용하지 않고 먼저 메모리에 파일을 매핑하여 파일을 읽습니다.이 방법을 사용하면 범위 기반 잠금이 배타적이어도 파일을 읽을 수 있습니다.
C#에서도, 다음의 방법으로 같은 것을 실현할 수 있습니다.
using (var f = new FileStream(processIdPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var m = MemoryMappedFile.CreateFromFile(f, null, 0, MemoryMappedFileAccess.Read, null, HandleInheritability.None, true))
using (var s = m.CreateViewStream(0, 0, MemoryMappedFileAccess.Read))
using (var r = new StreamReader(s))
{
var l = r.ReadToEnd();
Console.WriteLine(l);
}
언급URL : https://stackoverflow.com/questions/45644934/notepad-beats-them-all
반응형
'code' 카테고리의 다른 글
로그 축 표시 (0) | 2023.04.13 |
---|---|
Bash 명령에서 텍스트파일 내 검색 및 치환 (0) | 2023.04.13 |
Swift의 iOS 경고에서 TextField에서 입력 값 가져오기 (0) | 2023.04.13 |
클래스 메서드와 인스턴스 메서드의 차이점은 무엇입니까? (0) | 2023.04.13 |
Python 사전에 목록 추가 (0) | 2023.04.13 |