ファイルを切り詰める・伸長する(Windows) 最終更新日 2007年11月2日 23:45 ファイルの長さを指定して切り詰めたり伸長する方法。 _chsizeを用いる場合 別ウィンドウで開く すべて選択してコピー ダウンロード 行番号を表示する #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を使うのが無難)。 SetEndOfFileを用いる場合 別ウィンドウで開く すべて選択してコピー ダウンロード 行番号を表示する 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.SetLengthを用いる場合 別ウィンドウで開く すべて選択してコピー ダウンロード 行番号を表示する FileStream stream = new FileStream(@"test.bin", FileMode.Open); stream.SetLength(len); // lenは設定したい長さ stream.Close();