2012-01-02 9 views
5

最後のバイトが削除されるようにRandomAccessファイルを切り捨てる方法を知っています。Java RandomAccessFileが先頭から切り捨てられます

raf.getChannel().truncate(file.length() - 4); 

または

raf.setLength(file.length() - 4); 

しかし、どのように開始時にバイトような方法でのRandomAccessFileを切り捨てるために除去されますか?このファイルの内容を新しいファイルに書き込む必要はありません。私はグーグルで答えを見つけることができませんでした。助けてください。前もって感謝します。

答えて

5

ほとんどのファイルシステムをサポートしているわけではありません。モデルは、ディスク上の特定の場所から始まる一連のバイトです。ファイルは可変長であり、追加することができるので、切り捨ては比較的簡単です。

実際には、ファイル内のすべてのバイトをコピーする必要があります。可能な限り避けてください。キューファイル(ログなど)を管理する方法の1つは、一連のファイルを作成し、新しいファイルを定期的に開始し、最後から削除する方法です。

+0

@Tomのヘッドアップに感謝します。あなたの情報を使って次のことを進めました。 fc.transferTo(seek、file.length() - seek、fcTmp); – prageeth

+0

それはあまりにも悪いです。フラッシュメディア上で動作するファイルシステムは、消去サイクル数が限られているため、「最初から切り捨てる」には理想的です。 – Michael

関連する問題