スポンサーリンク

WSH(JScript)でテキストファイルの読み書きをしよう

WSH(Windows Script Host)でファイルをの読み書きをしなきゃならなくなったのでメモメモです φ(..)。

VBScriptじゃなくてJScriptを使っているのは、僕がVBScriptを触った事がなかったのと、JavaScriptだったらそれなりに扱えたからという理由です。だって、ちょっと差し迫ってたんですもの。

テキストファイルを読み込もう

テキストファイルから1行ずつ読み込んで何かする時はこんな感じで・・・。

ADODB.Stream というAPIはファイル操作専用というわけではないのですが、文字コードや改行コードが指定できるので便利です。

オープンしてから読み込みたいファイルを指定するというのは、何とも言えない違和感がありますが、文字コードも改行コードも指定できるのでなかなか優秀じゃないですかね。

テキストファイルに書き出そう

テキストファイルに書き込むだけならこれでOK。

WriteTexメソッドは基本動作が追記なので、実際に使う場合はループを利用してガンガン書き込むことになると思います。

文字コードの変換も内部でいい感じにやってくれてるみたいだし、なかなか便利じゃないですかね。

UTF-8をBOM無しで書き出そう

文字コードも改行コードも指定できて、文字コードの変換も自動でやってくれる便利な ADODB.Stream オブジェクトではありますが、1つだけ、ファイルを UTF-8 で書き出すとBOMを勝手に付けてくれるのだけはいただけません。

いろいろ調べてはみたのですが、BOMを 書く/ 書かない を設定するオプションって無いみたいなんですよね。

というわけで、BOMを避けて書き出さなくてはいけないのがちょっと手間です。方法としては、

う~ん、面倒(苦笑)。なので、頻繁に使うなら関数化しておくのが賢そうではあります。

ファイルの新規作成と上書きはどう違う?

ファイルの新規作成は「ファイルがなければ作る」のに対して、上書きの場合だと「ファイルがなければ作るし、あれば元のファイルを破棄して新しく作り直す」という動作となります。

ちなみに新規作成モードで書き込もうとして既にファイルが存在した場合にはエラーになります。

ファイルに追記がしたい!

基本として追記モードというのが無いようなので、これまた自力でなんとしなきゃいけません。

手順としては既存のファイルのデータを全部読み込んでから、データを追加して書き込む感じ?

と思ってたら、ポインタをファイルの末尾に移動させてから書き込めばいいらしい。

これならまだ簡単やね。

でも自分の触っているのがファイルなのか? メモリ上のデータなのか? 今ひとつよく分からんのがやや不安かも・・・。

扱うファイルサイズにはご注意

何度か失敗してわかったのは、どうやらこの ADODB.Stream という API はとにかくファイルを一気に処理しようとしているらしいという事です。

つまりメガとかならまだしも(?)ギガあたりのサイズのファイルを扱おうとすると、途端に重くなってしまうんです。

まぁ、こればっかりは仕様っぽいので仕方ないですね。

スポンサーリンク
コメント

try this for BOM:
fh.WriteText('\uFEFF' + 'something', 0);

Verify your Comment
Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

コメントを投稿

プロフィール


  • 書いてる人:夢界 陸

    名古屋在住のおっさん。
    プログラミングやガジェットの話など、 日々の興味を徒然と綴っています。



    Twitterやってます @mukairiku

    運営サイト
    www.mukairiku.net

ブログ内検索

Licenses

  • Creative Commons License

OTHER

  • このブログのはてなブックマーク数

Blog powered by TypePad

スポンサーリンク