- PR -

ファイルの末尾のデータを削除

1
投稿者投稿内容
84
ベテラン
会議室デビュー日: 2005/11/04
投稿数: 83
投稿日時: 2008-10-20 23:28
お世話になっております。

とある理由から
ファイルの末尾2byteのデータを削除したいと思っています。

例)
・処理前: A.dat -> 8194[byte]
・処理後: A.dat -> 8192[byte]

ファイルをストリームでコピーして、
末尾2byteだけ書き込まない、というのが一番簡単な方法かと思いますが、
それだとファイルサイズが大きいと時間がかかってしまいます。

JDK1.3の環境で
簡単にファイルの末尾を削除することは可能でしょうか?
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-10-21 00:43
http://www.hellohiro.com/fileio.htm

1.4からって書いてありますね。

1.3でももしかしたら使えるんじゃないでしょか。

ファイルの大きさにもよりますが、読み込みバッファを64Kバイト以上ファイルサイズの10分の1くらい(メモリと相談してMAX4Mくらい)確保すればそんなに時間
は掛からないかと。

http://www.nextindex.net/java/IO/sample.html

お犬様
ベテラン
会議室デビュー日: 2003/01/26
投稿数: 67
投稿日時: 2008-10-21 09:18
java.io.RandomAccessFileが使えるのであれば 1.2で追加されたRandomAccessFile#setLength(long)を使えばよいのではないかと。
84
ベテラン
会議室デビュー日: 2005/11/04
投稿数: 83
投稿日時: 2008-10-21 09:24
ぴあちゃんさん、お犬様、ありがとうございます。

RandomAccessFile#setLength(long)は盲点でした。
ドキュメントをよく読んでませんでした。

助かります。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)