7

FileSystemObject でファイルを読み込みたい。私のコードは次のとおりです。

<!DOCTYPE html>
<html lang="en">
<head>
<title>Read json</title>
</head>

<body>
<script type="text/javascript">

function readFile(filename){
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var ForReading = 1;
    var f1 = fso.OpenTextFile(filename, ForReading);
    var text = f1.ReadAll();
    f1.close();
    return text;
}

myJSONText = "text.txt";
var myObject = readFile(myJSONText);//eval('(' + myJSONText + ')');

document.write(myObject.name);
</script>
</body>
</html>
4

1 に答える 1

6

まず、上記のいくつかのコメントを繰り返しさせてください。クライアント側で ActiveXObject を使用することが、やるべきこととして称賛されているのを見たことがありません。

さて、私はこれを自分で行う方法を学ぼうとしていると言いましょう。この質問に関するいくつかの考え(および役立つリンク、下部を参照)を次に示します。

MSDN のスクリプティング クリニック コラムの「Much ADO about Text Files」によると、一般的なレイアウトは次のとおりです。

  1. オブジェクトを作成します。
  2. 最初のオブジェクトを使用して、最初のオブジェクトのメソッド (ファイルの取得など) を使用する別のオブジェクトを作成します。
  3. ファイルに対して処理を行います。
  4. ファイルを閉じます。

どうやって始めますか?IE Dev Center (ここにリンク) によると、次のように Javascript で ActiveXObject を使用します。

newObj = new ActiveXObject(servername.typename[, location])

コードで宣言すると、それが得られfsoます。この「サーバー名」のことはどうですか、ファイルはローカルにアクセスされていませんか? 入れた「サーバー名など」の代わりにScripting.FileSystemObject。ホスト PC の HKEY_CLASSES_ROOT レジストリ キーがサポートしている場合、これは実際には問題ありません (上記の参照を参照)。

ActiveXObject が正常に宣言され、ブラウザーで許可されている場合 (IE のみ)、エンド ユーザーがポップアップする警告 (「このページの ActiveX コントロールは、ページの他の部分と対話するのは安全でない可能性があります。 .." など)、オブジェクトは、そのオブジェクトに関連付けられている任意のメソッドを使用できるようにします。ここで、Windows Scripting FileSystemObject の能力が発揮されます。

FileSystemObject (fso) メソッドを使用できるようになりました。これは、その名前が示すように、ローカル マシンでのファイル (およびディレクトリ) のやり取りを意味します。あなたの質問が焦点を合わせているので、読むだけでなく、書いたり削除したりすることもできます。メソッドとプロパティの完全なリストは、MSDN のこちらから入手できます。.close()使用後は、メソッドを使用してファイルを閉じます。

したがって、これは明らかな理由で危険です。しかし、最初はわかりにくかったのは、これらのファイルシステムとのやり取りが目に見えないところで行われている可能性があるということでした。ファイルの読み取りからディレクトリ ツリーの削除まで、何を行っても、数行のコードが原因で何が起こっているかを知らせる警告やコマンド プロンプトが表示されない可能性が十分にあります。

上記のコードの最後のビットについてコメントして終了させて​​ください。JSON を FileSystemObject から取得したデータと組み合わせて使用​​すると、JavaScript との対話を可能にする優れた方法が提供されます ( JSON .parse と .stringifyがすぐに思い浮かびます)。これにより、おそらく HTML5 ローカル ストレージの代替として、データをローカルに保存できます (この概念について詳しく説明しているこの SO スレッドと、これについて私が提起した別の SO の質問を参照してください)。


IE Dev Center、JavaScript オブジェクト、ActiveXObject MSDN
JScript Windows スクリプティング(FileSystemObject メソッドなどを含む)
MSDN スクリプティング クリニック(古い記事、壊れたリンクが多数ありますが、この件に関する有益な情報はまだたくさんあります)

于 2014-08-08T15:52:51.240 に答える