No.2ベストアンサー
- 回答日時:
・簡単なやり方
新しいファイルを作って、挿入位置より前のデータを元ファイルからコピー、挿入データを追記、挿入位置より後のデータを元ファイルからコピーする。元ファイルを消して新しいファイルをリネームすれば完了。
・上記では空きディスク容量が足りないとき
挿入位置より後のデータを挿入データ分だけ後ろに移動して空いた位置に挿入データを書き込む。データの移動は上書きしないように後ろから順にコピーするなど手順は面倒だが出来ないことではない。
なお性能は考慮してませんので。後者の方法をとらなければいけないほど大きなファイルなら途中挿入が必要にならないデータ構造の検討から始めるべきでしょう。
なるほど。後者は特にギミックなやり方ですね。
やはり、データ構造にポイントがあるようなので、その辺の考え方も勉強していこうと思います。
ありがとうございました。
No.3
- 回答日時:
可能であるなら、ファイルへの書き込みはデータが完成してから一気に書いた方が無難です。
そうしないと、中途半端にファイルに書き込んでから、途中でエラーや例外が発生した場合に、いろいろと面倒が起こります。
データが完成してからなら、I/Oエラー以外で中途半端なファイルができる可能性はありません。
もちろん、今回のように途中にデータを挿入したり、一部分を削除することも、メモリ上で行えば簡単です。
ありがとうございます。
そうですよね。そういえばソフトを使ってファイル開くとその文だけメモリも食っているので、いったん全部も見込んで処理しているのですよね。
No.1
- 回答日時:
全部はじめから読み込んで、必要なところにデータを追加して、別のファイル名で書き戻します。
後は、必要なら元のファイル名を変更するか削除し、変更したファイル名を元のものに変更します。全部読み込むことがストレスとなるようなファイルの場合は、ランダムファイル等のデータ構造を考える必要があるでしょう。
なるほど、やっぱりすべて新しいものに移すのですね。
結構ストレスのかかるものなので、何か技があるのかと思いましたが、その技はデータ構造の検討にあるようですね。
これからデータ構造を考えるような勉強もしていこうと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(プログラミング・Web制作) Android Studio 難しい 4 2023/06/18 22:27
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- フリーソフト テキストファイル内を検索したい 1 2022/06/01 08:33
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
ファイル書込みで一行もしくは部分的に上書きする
PHP
-
ファイル内のデータを1行削除する方法
C言語・C++・C#
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
-
4
C言語でテキストファイルの内容を置換して保存したい
C言語・C++・C#
-
5
CString型 全角半角を意識せずに「1文字」ずつ取り出す
C言語・C++・C#
-
6
c++,ある関数のクラスから別のクラスの関数を呼ぶ
C言語・C++・C#
-
7
C言語---ファイルに出力したデータをすべて消去する方法
C言語・C++・C#
-
8
CSVファイルの特定行の削除
Visual Basic(VBA)
-
9
画面を強制的に再描画させる方法
C言語・C++・C#
-
10
ファイルの結合
C言語・C++・C#
-
11
C言語 exitの使い方
C言語・C++・C#
-
12
■文字コード判定■
C言語・C++・C#
-
13
テキストファイルの最終行を削除したいのですが
その他(プログラミング・Web制作)
-
14
C++にてtemplateで受け取った任意の型の変数が何型であるかを判定したい
C言語・C++・C#
-
15
ファイルへの書込み処理が異常に遅い
C言語・C++・C#
-
16
【C&C++】指定行のみファイル書き込み
C言語・C++・C#
-
17
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
18
数字以外が入力されたらエラー文を出したい。
C言語・C++・C#
-
19
CStringの文字列検索&抜き出しについて
C言語・C++・C#
-
20
C言語でファイル読み書きを早くしたい。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
事務の派遣で働いています。多...
-
共有フォルダに誰が何にアクセ...
-
ファイルの先頭に追加書込みす...
-
Dream weaverで、誤ってファイ...
-
tmpファイル なぜできる?削除...
-
【Excel】[Expression.Error] ...
-
Batch: フォルダ内の特定のファ...
-
月が変わったら自動でシートが...
-
Access VBA を利用して、フォル...
-
VBAでCSVファイルが使用中かど...
-
excelを共有ファイルにすると行...
-
特定のエクセルファイルを起動...
-
AccessVBAで作成したExcelファ...
-
Excel VBA 処理後データが重た...
-
大量のCSVデータを行列の変換を...
-
一時ファイルについて win32 Ge...
-
mdbファイル フォームを開くと...
-
Access2007でldbファイルが...
-
access関数を説明できる方いま...
-
CSVファイルのデータがA列にま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
共有フォルダに誰が何にアクセ...
-
【Excel】[Expression.Error] ...
-
特定のエクセルファイルを起動...
-
Batch: フォルダ内の特定のファ...
-
VBAでCSVファイルが使用中かど...
-
XMLデータを変換し印刷する方法
-
AccessVBAで作成したExcelファ...
-
月が変わったら自動でシートが...
-
Access VBA を利用して、フォル...
-
tmpファイル なぜできる?削除...
-
excelを共有ファイルにすると行...
-
Excel VBA 処理後データが重た...
-
(Excelマクロ)datファイルをエ...
-
エクセルファイルのデータ転記...
-
社内Excel共有ブックでの保存ト...
-
大量のCSVデータを行列の変換を...
-
【アクセス】「ほかのユーザー...
-
ファイルの途中に文字列を挿入
-
拡張子が「cda」のファイルを聞...
-
CSVの項目行を削除して一つのフ...
おすすめ情報