テキストファイルに文字を先頭に追加するには?

解決


ms  2005-04-14 15:04:21  No: 89389  IP: [192.*.*.*]

環境はVB6SP5です。

----------------------
AAAA,BBBB,CCCC\n
DDDD,EEEE,FFFF\n
GGGG,HHHH,IIII\n
EOF
----------------------

という中身のテキストを

----------------------
1111,2222,3333\n
AAAA,BBBB,CCCC\n
DDDD,EEEE,FFFF\n
GGGG,HHHH,IIII\n
EOF
----------------------

と言う風に先頭行に追加したいのですが、可能でしょうか?

編集 削除
Ryo  2005-04-14 15:50:18  No: 89390  IP: [192.*.*.*]

以下のような手順で出来ると思います。

(1)ファイルを読み取りモードで開いてファイルの中身を全て文字型変数に格納

(2)ファイルを書き込みモードで開く

(3)先頭行に追加したい文字列をファイルに書き込む

(4)最初に取得したファイルの中身をファイルに書き込む

(5)ファイルを閉じる

編集 削除
ms  2005-04-14 15:52:45  No: 89391  IP: [192.*.*.*]

上記の方法で可能なのですが、データがものすごく大きかった場合に
非常に時間がかかります。

この方法以外には、できないでしょうか?

編集 削除
みい  2005-04-14 16:38:10  No: 89392  IP: [192.*.*.*]

考え方としては
元ファイルをリネーム->新ファイル作成->追加文字列書込->ファイル閉じる
->新ファイルと元ファイルを連結->(元ファイル削除)
とか…。連結方法が思い付いてないけど。

編集 削除
ms  2005-04-14 16:40:52  No: 89393  IP: [192.*.*.*]

ありがとうございます。

VBのファイル処理ではできないものでしょうか?

>新ファイルと元ファイルを連結
この方法も模索してみます。

編集 削除
みい  2005-04-14 16:46:25  No: 89394  IP: [192.*.*.*]

連結はDOSコマンドだったらcopyでファイル名+ファイル名でできるんですけどね。

編集 削除
ms  2005-04-14 17:00:00  No: 89395  IP: [192.*.*.*]

>連結はDOSコマンドだったらcopyでファイル名+ファイル名でできるんですけどね。
DOSでやってみましたがうまくいきませんでした。
ファイル名の指定の方法等が間違っているのでしょうか?
また、このコマンドで連結したファイルはどのようになるのでしょうか???

編集 削除
ねろ  2005-04-14 17:11:18  No: 89396  IP: [192.*.*.*]

>DOSでやってみましたがうまくいきませんでした。
>ファイル名の指定の方法等が間違っているのでしょうか?
と言われても、どの様に指定したか判らなければ。。。(^^;

普通はこうかな 。
Shell "command.com /c c:\Text1.Text + c:\Text2.Text", vbHide
Text1に足されます。

ところで
>データがものすごく大きかった場合に
はどのくらいの大きさなんですかね。

編集 削除
ms  2005-04-14 17:20:13  No: 89397  IP: [192.*.*.*]

>>データがものすごく大きかった場合に
>はどのくらいの大きさなんですかね。
20万行ぐらいのデータです。

>Shell "command.com /c c:\Text1.Text + c:\Text2.Text", vbHide
ちゃんとファイルを置いてやってみましたが、なにも変更がありません。
どうしてでしょうか???

編集 削除
Ryo  2005-04-14 17:46:57  No: 89398  IP: [192.*.*.*]

単にコマンドが正しくなかっただけでは?
以下のようにしたらうまくできました。
Shell "command.com /c copy c:\Text1.Text + c:\Text2.Text c:\Text1.Text", vbHide

編集 削除
ねろ  2005-04-14 18:15:21  No: 89399  IP: [192.*.*.*]

わー!!!
花見疲れでめちゃくちゃなものを貼り付けました。orz
Ryoさん、有難う!

編集 削除
ガッ  2005-04-14 18:29:37  No: 89400  IP: [192.*.*.*]

…不思議なのは、
> Shell "command.com /c copy c:\Text1.Text + c:\Text2.Text c:\Text1.Text", vbHide
と書くと、
"c:\Text1.Text"というファイルと、"c:\Text2.Text"と言うファイルを結合して、
"c:\Text1.Text"というファイルにする…んだけど、
これはやっぱり
"c:\" & """" & Text1.Text & """" とした方がいいのかな…?
…あと、万が一を考えて、/b オプションもつけたほうがいいかも。

※誤爆ぢゃ…ないよね…(…

編集 削除
いな  2005-04-14 18:58:44  No: 89401  IP: [192.*.*.*]

>※誤爆ぢゃ…ないよね…(…

誤爆じゃないです。
よくある結合Batでは
/bオプションつけますから・・・。

編集 削除
みい  2005-04-14 20:10:29  No: 89402  IP: [192.*.*.*]

ああっ、少し見ない間に…。
皆々様フォローありがとうございます。

便乗質問:
皆様はcopyコマンドの時 /v オプション付けますか?

編集 削除
いな  2005-04-14 21:13:04  No: 89403  IP: [192.*.*.*]

いや、自分の場合はつけない。

たまに、/-Yつけるときがあるが、ほとんどのケースでは/bのみ

編集 削除
ms  2005-04-15 09:15:02  No: 89404  IP: [192.*.*.*]

できました。

皆さんありがとうございました。

またお願いします。

編集 削除
みい  2005-04-15 23:37:49  No: 89405  IP: [192.*.*.*]

> たまに、/-Yつけるときがあるが、ほとんどのケースでは/bのみ
いな様ありがとうございますm(_ _)m。

自分の場合は/bと/yなのですが、/vでチェックした方がいいのかなと悩んでたもので。

編集 削除