ファイルの長さを指定して切り詰めたり伸長する方法。
#include <stdio.h> #include <io.h> FILE* fp = fopen( "test.bin", "wb" ); int fd = _fileno( fp ); _chsize( fd, len ); // lenは設定したい長さ fclose( fp );
_chsizeはFILE*ではなくファイルディスクリプタ(int)を引数に取るため、_filenoでFILE*からintに変換する必要がある(fp->_fileを参照するやり方もあるが、_filenoを使うのが無難)。
HANDLE hFile = CreateFile( "test.bin", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); SetFilePointer( hFile, len, NULL, FILE_BEGIN ); // lenは設定したい長さ SetEndOfFile( hFile ); CloseHandle( hFile );
SetFilePointerでファイルポインタを移動してから、SetEndOfFileでEOFを設定することでファイルの長さを設定することが出来る。
FileStream stream = new FileStream(@"test.bin", FileMode.Open); stream.SetLength(len); // lenは設定したい長さ stream.Close();