C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: バイナリファイルのデータ削除


(過去ログ 61 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■35256 / inTopicNo.1)  バイナリファイルのデータ削除
  
□投稿者/ まる (11回)-(2009/04/22(Wed) 21:39:02)

分類:[C#] 

開発環境:VC#

1件につき、100Kバイトのデータをファイルに保存しています。
(1つのファイルに数百件分のデータが保存されることになります。)
BinaryWriter、BinaryReaderを使ってファイルの読書きをしています。

このデータは、追加、変更、削除がプログラム側から行われています。

追加、変更については思い通りの位置に実施できたのですが、削除が出来ないでいます。

追加、更新については、下記のコードで実現しています。

*******ここから********

FileStream fs = new FileStream(ファイル名, FileMode.OpenOrCreate, FileAccess.Write);

BinaryWriter bw = new BinaryWrite(fs);

bw.Seek(書込み先頭位置, SeekOrigin.Begin);
bw.Write(byte配列, 0, byte配列のサイズ);

*******ここまで********

削除先頭位置から1件分のデータ量分(100kB)、データを削除したいと思っているのですが可能でしょうか?

イメージとしては、StringのRemoveメソッドのような動作を出来たら・・・と思っています。

以上、よろしくお願いします。

引用返信 編集キー/
■35257 / inTopicNo.2)  Re[1]: バイナリファイルのデータ削除
□投稿者/ 渋木宏明(ひどり) (1123回)-(2009/04/22(Wed) 22:21:10)
渋木宏明(ひどり) さんの Web サイト
2009/04/22(Wed) 22:45:29 編集(投稿者)

> 削除先頭位置から1件分のデータ量分(100kB)、データを削除したいと思っているのですが可能でしょうか?

できないです。

Windows のファイルシステムには「途中を詰める」という操作はありません。

削除位置に後続のデータをすべて書き出し、末尾を切り離す(これはできます)くらいしか手はありません。

あるいは、もっと単純に必要なデータだけを新たにファイルに書き出すとか。
引用返信 編集キー/
■35263 / inTopicNo.3)  Re[2]: バイナリファイルのデータ削除
□投稿者/ Hongliang (371回)-(2009/04/23(Thu) 00:18:33)
あとは、何か特定の値を「無効データ」として扱い、削除代わりにその値で上書きするとか。
引用返信 編集キー/
■35284 / inTopicNo.4)  Re[3]: バイナリファイルのデータ削除
□投稿者/ まる (12回)-(2009/04/23(Thu) 14:57:49)
渋木宏明(ひどり) 様、Hongliang様

ありがとうございます。やっぱり無理なんですね。
お尻のデータを一件分、切り取って貼り付けることにします。

ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -