• ベストアンサー

テキストファイルの最終行の削除

C++Builder6です。 テキストファイルの最終行だけを削除する方法を 探しています。 詳しく言えば、ファイルを開けないで、最後にある 改行コード?のみを削除したいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KoHal
  • ベストアンサー率60% (110/181)
回答No.2

ファイルを開かずにファイルを編集することは出来ません。 が、「開く」という意味が「ビジュアルなコンポーネントに表示しない」という意味なら可能です。  char chr[3] = { '\0' };  TFileStream* fstrm = new TFileStream( "ファイル名", fmOpenReadWrite );  if ( fstrm->Size >= 2 )  {   fstrm->Seek( -2, soFromEnd );   fstrm->Read( chr, 2 );   if ( strcmp( chr, "\r\n" )==0 )    fstrm->Size = fstrm->Size - 2;  }  delete fstrm; ただ、正直言いますと、このような操作が必要な状況というのがいまいち分かりません。

その他の回答 (2)

  • lawson
  • ベストアンサー率44% (29/65)
回答No.3

No1さんの回答に対して、iniファイルのように使いたい とのことから、そのファイルはシステム内のいろいろな プログラムから読み取り・更新をするような設定ファイル 系のファイルなので、できるだけファイルを開くような ことはしたくないという意図ではないかと勝手に想像 しました。また、最後の改行文字を削除するということ から何らかのOSやフレームワークの環境で使用している モジュールの使用上、自分が意図しない改行コードが 入ってしまい、それを取り除くのがどうしても必要な 場合があるとか、そういうことだと勝手に想像しました。 本当は本人が詳細に説明するのが一番よいのですが、 とりあえず、この方向性で回答します。 いぜん、金融系のシステムで納期が厳しくて 設定情報をマスタDBにしてやる暇がないときに、 暇な時にあらかじめ作成しておいた以下の モジュールを使って、設定ファイルの読み取り更新を 排他制御させて、やっていました。 更新したいファイル名にある決まった規則で識別子 をつけたロックファイルをロックする。 設定ファイル名を日付や世代番号をつけた名前で バックアップファイルにリネームする。 バックアップファイルを読みながら 設定ファイルを元のファイル名で新規作成し、 その際に更新したい変更を反映させながら、 書き込んでいく。 最後にバックアップファイルと新たにできあがった 設定ファイルとのDIFFをとった差分と 該当アプリケーションのほうで変更したいとおもって いた内容、および、アプリケーションモジュール名 や日付等をログに吐き出して、バックアップファイル については何世代か世代管理を行なうようにした。 当然、エラーが発生した時はすべて元に戻すような 実装にしていた。 実際には 「設定ファイルを元のファイル名で新規作成し、 その際に更新したい変更を反映させながら、 書き込んでいく。」 の部分を各アプリケーションで必要なときに実装し、 あとは、リンクするだけで再利用するようなモジュールを 作っていた。 あまりにも、昔の話なので、もうソースファイルは ないです。 なぜ、ファイルを開かないで、改行コードをとりたいのか なんのためにとか?そういう情報があると、 別の方法をいろいろ考えれるかもしれない。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

基本的にファイルを開かずにファイル処理をするのは無理です。地道に実装するしかないように思います。 ちなみに、なぜファイルを開きたくないのでしょうか?

yama888
質問者

補足

テキストファイルを IniFile のように使いたいのですが、無理でしょうか?

関連するQ&A

  • テキストファイルの最終行の改行コード削除

    お世話になります。 SQLコマンドを発行し、csvファイルを自動生成させるシェルスクリプトを作ったのですが、最終行にある改行コードを削除して欲しいとの指示を受けて、その方法を調査。試行錯誤しているのですがよい方法が見つかりません。 最終行にある改行コードのみを削除するにはどうしたら宜しいでしょうか。 ご教示頂ければ幸いです。 宜しくお願い致します。                                以上

  • テキストファイルの最終行を消すには。

    C#を使っていますが、だいたい同じだと 思いますのでVBで質問します。 テキストファイルの最終行を 消したいのですが、いい方法は、 ないでしょうか。 (指定行を消す方法でも) お願いします。

  • テキストファイルの最終行を削除したいのですが

    初めまして。 batかVBSのプログラムで、テキストファイルを開いて最終行のみを削除したいのですが、どうしても実現が出来ません。 もし分かる方がおられましたら、是非ともご教授をお願い致します。

  • バッチファイルを使ってテキストファイルの任意の行を削除したい

    こんにちは。 バッチファイルを使って、テキストファイルの任意の行を削除したいのですが、可能でしょうか? 今困っているのは、あるファイルの1行目と2行目と最後の行を削除したいのですが、コマンドがわかりません。 いろいろ調べてみたのですが、わかりませんでした。 よろしくお願いします。

  • テキストファイルの任意の行からのデータ書き込み

    C++Builder5.0(Professional)でテキストファイル 書き込みのプログラムを作成しています。 あるテキストファイルがあり、そのファイルの 1,2行目にはすでにテキストデータが書き込まれている ものとします。 このテキストファイルを開き、4行目から 10行目までデータを書き込むといったプログラムは どの様に作成すればよろしいでしょうか。 御回答を宜しくお願いします。

  • テキストファイルの重複行を削除できますか?

    テキストファイルを読み込んだ際に重複行を削除する 事とかって出来ますでしょうか?? そういう削除関数みたいなのがないんですよね。。。。 C言語って.......

  • テキストファイルから改行コードを削除して読込む方法

    ExcelエクセルVBAマクロについてテキストファイルから改行コードを取り除いて 変数に読み込む方法について確認させてください。 下記のVBAログラムはWordファイルをテキストファイルに落としたファイルを変数aに 読み込んでいます。 このとき、読み込んだテキストファイルはWordファイルをテキストファイルに 落とし込んだファイルなので改行コードが残ってしまいます。 この改行コードを削除したうえで変数aに読み込みたいのですが可能でしょうか。 改行コードはメモ帳では「↓」と下矢印に似た文字で表示されます。 (実際には下矢印ではないようです。) 今のところ、Replace関数で改行コードを削除するプログラムを 考えているのですが、改行コードのVBAでの表現方法が分からないので 先に進むことが出来ません。いい案があればぜひご教授下さい。 あるいはほかの方法でも改行コードが削除出来れば結構です。 またこの変数aに読み込んである文字列からかぎカッコの内部にある文字を 抽出してエクセルの行方向に出力する方法があればご教授頂ければ幸いです。 例えば “あなたは「こんにちは」と言いました。 私は「元気ですか」と聞きました。” が文字列aに読み込んである場合、“こんにちは”、“元気ですか”を抽出して エクセルに順に出力という方法です。 色々と書きましたが、よろしくお願いいたします。 以下、VBAプログラム本文です。 ---------------------------------- Sub sample1() Dim a As String a = CreateObject("Scripting.FileSystemObject").GetFile("C:\sample.txt").OpenAsTextStream.Readall CreateObject("Scripting.FileSystemObject").GetFile("C:\sample.txt").OpenAsTextStream.Close End Sub

  • テキストファイルから最終行の抽出

    テキストファイルに出力された内容のうち、 最終行のみ抽出し、他のテキストファイルに 落とし込みたいと考えています。 DOSコマンドを使用して実現したいと思うのですが 良い方法などございましたら、ご教授ください。 宜しくお願い致します。 ※OSはWindows Server 2003を使用しています。

  • 最終行をファイルを開かずにカットする方法はありますか?

    UNIXのviでファイルを開くと最終行が不完全といわれてしまいます。最後に半角スペースと変な文字が入っているようです。 viエディタのコマンドで、DDを押し最終行を手動でカットすると直るのですが、 Cやシェルなどで最終行をカットする方法はありますでしょうか?

  • テキストファイルの処理について

    初心者です。 PHP5を始めて約50時間程度です。 テキストファイルの処理についての質問です。 fgets,file_put_contents,str_replace,array等の関数を使い処理するのだと思います。 構文が組み立てられません。 参考になるサイト等アドバイスいただけると幸いです。 よろしくお願いします。 下記の様な元になるテキストファイルがあります。 1.最初の文字があるまで(=改行だけの行)は削除 2.最初の文字列の最後に”,”を入れ改行をとる 3.次の行と次の次の行は削除 4.次の行は、例:7月4日(土)を7,4,土に 5.次の行は、例:10:00~13:00を10:00,13:00に 6.次の行と次の次の行は削除して改行 7.次の行と次の次の行は削除 8.前述1から7までの繰り返し *最終的には後述のようなテキストファイルになります ----元になるテキストファイル 植物の光合成 理科 3 相田ももこ 7月4日(土) 10:00~13:00 30名 5,000円 鎌倉時代 社会 3 土田正 7月4日(土) 14:00~17:00 30名 5,000円 生物の進化 理科 6 長谷川浩 7月4日(土) 10:00~17:00*会場は大阪です 16名 10,000円 ----元になるテキストファイル以上 ---完成後のファイル 植物の光合成, 理科,7,4,土,10:00,13:00 鎌倉時代,社会,7,4,土,14:00,17:00 生物の進化,理科,7,4,土,10:00,17:00 ---完成後のファイル以上

    • ベストアンサー
    • PHP