アプリ版:「スタンプのみでお礼する」機能のリリースについて

数ギガのテキストファイルがあり、語尾の1バイト(EOF)を瞬時に除去したいと思います。

バイトで読んで1バイトのみ出力しないと言う方法が一番簡単ですが、時間がかかる上、巨大ファイルには向きません。

下記語尾を置換するソースを書きましたが、除去の方法がわかりません。初心者ですので、簡単にお願いします。

FileStream fs = new FileStream("test.txt", FileMode.Open);
byte[] b = new byte[1];
fs.Seek(fs.Length - 1, SeekOrigin.Begin);
fs.Write(b, 0, 1);
fs.Close();

A 回答 (2件)

>数ギガのテキストファイルがあり、語尾の1バイト(EOF)を瞬時に除去したいと思います。



語尾というか…ファイルの一番最後の1バイトを削除してファイルサイズを切り詰めたい。
ってことでいいんでしょうか?

FileStream fs = new FileStream("test.txt", FileMode.Open);
fs.SetLength(fs.Length - 1);
fs.Close();

で、最後の1バイトを切り捨ててサイズを詰められますが……。
# 切り詰める1バイトがEOF(0x1A?)かどうかまではみていませんけど。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/04/04 21:44

#1の方も書かれていますが、テキストファイルの末尾に必ずコードとしてEOFがあるとは限りません。


むしろもうない方が多いんじゃないかと思いますけど。
    • good
    • 0
この回答へのお礼

ありがとうございます。弊社の汎用機は特殊な1バイトがついてるので、困ってました。

お礼日時:2013/04/04 21:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!