- 締切済み
テキストファイルの変更
以下のようなデータファイルを読み出して DATA_Aの値を123から567890に変更しようと した場合、一時ファイルを作成してから data.txtにリネームする以外にどのような方法が ありますか? # データは可変長のテキストファイルとします === data.txt === DATA_A=123 DATA_B=ABCDE
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- taranrappu
- ベストアンサー率64% (16/25)
もし自分が作るとしたら、と考えたら 読み元のファイルサイズが小さければ 一気にすべてのデータをメモリ上に展開して 加工して、また一気に書き込みますね。 ファイルが大きければ やはりテンポラリファイルを作成するなりして 少しずつ繰り返し加工すると思います。 CSVファイルって結構汎用的な形式なので 便利なAPIやライブラリがあるかもです。 私は残念ながら存じませんが
- taranrappu
- ベストアンサー率64% (16/25)
WritePrivateProfileString の間違いでした。
- taranrappu
- ベストアンサー率64% (16/25)
Windows限定ですが SetPrivateProfileString API一発で終わらせます。 iniファイルの構造と似てますし。 一時ファイルを作成する必要もありませんし。
お礼
Windows&このフォーマット限定であれば 確かにAPIで行けます。 このAPIってどんなアルゴリズムで実装されて いるのか気になるところです。 たとえばCSVでも対応できる手段となると、 一時ファイルかメモリ展開しかないんで しょうか...
- mac_res
- ベストアンサー率36% (568/1571)
>一時ファイルを作成してからdata.txtにリネームする以外にどのような方法がありますか? データファイルの大きさに対し、相対的にメモリリソースに余裕があれば、いったんデーターを全部メモリに読み込み、加工したデータを元のファイルに書き戻す手段が使えます。
お礼
回答ありがとうございます。 たしかに、一時記憶をファイルにするかメモリに するかという選択肢はありそうですね。
お礼
今回はメモリのガーベージコレクトもできないような 制約があるので、やはりテンポラリファイルを作って 変更することにします。 みなさん回答ありがとうございました。