電子書籍の厳選無料作品が豊富!

RubyでTeXファイルを出力しようとしているのですが、
追加書き込みをする際に、End Of File の前の一番最後の文字列
である「\end{document}」が邪魔なので削除したいのですが、どうしても
案が見つかりません。
なにか良い方法をご存知の方はぜひご教授ください。おねがいします。

A 回答 (3件)

よっぽどでかいファイルが対象で、ディスクも余裕がないとかいう制限がないのなら、


ARGV.each do |file|
data = ""
lastline = ""
open(file, 'r') do |f|
data = f.readlines
lastline = data.pop
end
File.rename file, file + ".bak"
open(file, "w") do |f|
f.write data
f.puts "この行を追加"
#f.write lastline # 元の最終行を復活するのならこれも実行
end
end

こんな感じに

1. ファイルを配列に読み込み
2. 最終行を削除し
3.ファイルを書き込み用にオープンしなおして
4. 最終行を削除したデータと追加データを書き出す

ってな具合でいいのでは?

エラー処理とかはしていないのでその辺はよしなに。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
調べながら、試してみたら上手くいきました。

お礼日時:2008/01/25 09:16

追記したいファイルを r+ で開いて


邪魔な文字列の手前まで seek でファイルポインタを戻すというのは?
    • good
    • 0
この回答へのお礼

回答を元に調べてみました。
上手くいきそうな手が見つかったので試してみます。
ありがとうございました。

お礼日時:2008/01/20 21:33

ファイル操作の削除の基本は


書き出しの時にそこを飛ばす事

じゃないのかな
    • good
    • 0
この回答へのお礼

早い回答ありがとうございました。
お礼が遅くなってしまい申し訳ございません。

ファイルの入出力は今まで勉強したことがなかったので、
困っていましたが、参考にして調べてみたいと思います。

お礼日時:2008/01/19 10:58

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