바이너리 포맷 기록의 클래스를 만들고 사용 : 나 자신 그래서 난이, 클래스가 다른 데이터를 포함 할 수 없습니다 일하는 것이 절대적으로 확실하지 않다 이런 짓을하지 않은
FileStream fs = new FileStream("file.dat", FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, <insert instance of a class here>);
fs.Close();
을, 그건 물론. 클래스와 운이 없다면 구조체를 시도 할 수 있습니다.
편집 : 그냥 다른 가능한 솔루션을 내놓았다의 Buffer.BlockCopy 기능을 데이터의 구조체를 생성하고 사용
byte[] writeBuffer = new byte[sizeof(structure)];
structure[] strucPtr = new structure[1]; // must be an array, 1 element is enough though
strucPtr[0].item1 = 0213; // initialize all the members
// Copy the structure array into the byte array.
Buffer.BlockCopy(strucPtr, 0, writeBuffer, 0, writeBuffer.Length);
지금 당신이 한 번에 파일로 writeBuffer를 작성할 수 있습니다.
두 번째 편집 : 해결할 수없는 동기화 문제에 동의하지 않습니다. 우선, 데이터는 한 번에 한 바이트가 아닌 전체 섹터에서 파일에 기록됩니다. 그리고 파일은 플러시 할 때까지 실제로 업데이트되지 않으므로 데이터를 쓰고 파일 길이를 업데이트합니다. 가장 좋고 안전한 방법은 파일을 독점적으로 열거 나 레코드 (또는 여러 개)를 작성하고 파일을 닫는 것입니다. 따라서 읽기 응용 프로그램은 비슷한 방식으로 파일을 읽어야하며 (예 : 열린 파일, 읽기, 닫기) "액세스 거부"오류를 정상적으로 처리해야합니다.
어쨌든, 한 번에 전체 기록을 쓰는시기가 언제 더 좋을지 나는 확신합니다.
+1 당신이 말한대로 다른 응용 프로그램이 얼마나 잘 작동하는지에 따라 달라집니다. 파일이 잠긴 것으로 확인되면 심하게 공황 상태가 될 것인가, 아니면 평온한가? – MarkJ