No.2ベストアンサー
- 回答日時:
・簡単なやり方
新しいファイルを作って、挿入位置より前のデータを元ファイルからコピー、挿入データを追記、挿入位置より後のデータを元ファイルからコピーする。元ファイルを消して新しいファイルをリネームすれば完了。
・上記では空きディスク容量が足りないとき
挿入位置より後のデータを挿入データ分だけ後ろに移動して空いた位置に挿入データを書き込む。データの移動は上書きしないように後ろから順にコピーするなど手順は面倒だが出来ないことではない。
なお性能は考慮してませんので。後者の方法をとらなければいけないほど大きなファイルなら途中挿入が必要にならないデータ構造の検討から始めるべきでしょう。
なるほど。後者は特にギミックなやり方ですね。
やはり、データ構造にポイントがあるようなので、その辺の考え方も勉強していこうと思います。
ありがとうございました。
No.3
- 回答日時:
可能であるなら、ファイルへの書き込みはデータが完成してから一気に書いた方が無難です。
そうしないと、中途半端にファイルに書き込んでから、途中でエラーや例外が発生した場合に、いろいろと面倒が起こります。
データが完成してからなら、I/Oエラー以外で中途半端なファイルができる可能性はありません。
もちろん、今回のように途中にデータを挿入したり、一部分を削除することも、メモリ上で行えば簡単です。
ありがとうございます。
そうですよね。そういえばソフトを使ってファイル開くとその文だけメモリも食っているので、いったん全部も見込んで処理しているのですよね。
No.1
- 回答日時:
全部はじめから読み込んで、必要なところにデータを追加して、別のファイル名で書き戻します。
後は、必要なら元のファイル名を変更するか削除し、変更したファイル名を元のものに変更します。全部読み込むことがストレスとなるようなファイルの場合は、ランダムファイル等のデータ構造を考える必要があるでしょう。
なるほど、やっぱりすべて新しいものに移すのですね。
結構ストレスのかかるものなので、何か技があるのかと思いましたが、その技はデータ構造の検討にあるようですね。
これからデータ構造を考えるような勉強もしていこうと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
高校生はアルバイトするべきだろうか?賛成だったら「賛」、否定だったら「否」を文頭においてあなたの意見を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
ファイル書込みで一行もしくは部分的に上書きする
PHP
-
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
ファイル内のデータを1行削除する方法
C言語・C++・C#
-
-
4
全角文字を含んだ文字の並びを逆順にするには?
C言語・C++・C#
-
5
sscanfとscanfの違いがよくわからないのですが、簡単に優しく教えて下さい。 お願い致します。
C言語・C++・C#
-
6
ファイルの結合
C言語・C++・C#
-
7
fopne で失敗する原因
C言語・C++・C#
-
8
C言語---ファイルに出力したデータをすべて消去する方法
C言語・C++・C#
-
9
同じ名前のファイルを作った場合に上書きしてしまうのですが、どうすれば上書きしないで保存できるのでしょうか?
C言語・C++・C#
-
10
*をユーザーが入力した数字の数だけ表示するプログラムの作り方を教えてください
C言語・C++・C#
-
11
C言語で全角文字を扱いたいのですが、
C言語・C++・C#
-
12
strcat関数を自作したいです
C言語・C++・C#
-
13
C言語のfopenについて教えてください。
C言語・C++・C#
-
14
C言語で複数列のデータを1列のみ読み込みたい
C言語・C++・C#
-
15
fgets関数を使用したときの文字あふれについて
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
excelを共有ファイルにすると行...
-
共有フォルダに誰が何にアクセ...
-
特定のエクセルファイルを起動...
-
(Excelマクロ)datファイルをエ...
-
Batch: フォルダ内の特定のファ...
-
Excel VBA 処理後データが重た...
-
【アクセス】「ほかのユーザー...
-
access関数を説明できる方いま...
-
VBAでCSVファイルが使用中かど...
-
ファイルの途中に文字列を挿入
-
事務の派遣で働いています。多...
-
WEBクエリが使えない場合のHPデ...
-
テキスト内容の削除方法
-
mdbファイル フォームを開くと...
-
Access VBA を利用して、フォル...
-
VB.NET 2008 データベースの接...
-
1つのExcelファイルから複数作...
-
AccessVBAで作成したExcelファ...
-
VBAで複数ファイルからのデ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
共有フォルダに誰が何にアクセ...
-
特定のエクセルファイルを起動...
-
VBAでCSVファイルが使用中かど...
-
Batch: フォルダ内の特定のファ...
-
AccessVBAで作成したExcelファ...
-
月が変わったら自動でシートが...
-
excelを共有ファイルにすると行...
-
(Excelマクロ)datファイルをエ...
-
Access VBA を利用して、フォル...
-
【アクセス】「ほかのユーザー...
-
Excel VBA 処理後データが重た...
-
tmpファイル なぜできる?削除...
-
社内Excel共有ブックでの保存ト...
-
mdbファイル フォームを開くと...
-
Access2007でldbファイルが...
-
Dream weaverで、誤ってファイ...
-
XMLデータを変換し印刷する方法
-
大量のCSVデータを行列の変換を...
-
ファイルの途中に文字列を挿入
おすすめ情報