2012-04-02 12 views
2

javascriptでファイルを1行ずつ読み込む方法はありますか?具体的には、fileは辞書です。私は数ヶ月前に作ったjava anagramソルバーのレプリカを作成しようとしていましたが、行ごとにファイルを読み込めないというこの問題にぶつかりました。私はファイルをダウンロードしてそれをローカルに保存することができます。JavaScriptで行単位で読むことができますか?

+0

AJAXを使用して自分のドメインのデータを読み込むことができます(XML HTTPリクエストを使用します) – zzzzBov

+0

あなたのドメインではないなら、それはできません(あなたのブラウザがバグでない限り)。これは、原点を越えた​​リクエストルールを破るでしょう。 –

+0

ブラウザのJavascriptはファイルシステムにアクセスできず、他のオプションだけがネットワークを経由することですが、少しずつファイルを読むという個別の要求で、サーバーに行き来したいのですか?これは単にこの問題を解決する適切な環境ではないかもしれません。 – deceze

答えて

3

使用YQL:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fdocs.oracle.com%2Fjavase%2Ftutorial%2Fcollections%2Finterfaces%2Fexamples%2Fdictionary.txt%22&format=json&diagnostics=true&callback=cbfunc 

Here's what the fiddle looks like:

window.callback = function(a) { window.file = a.query.results.body.p; go(); }; 

$.getScript('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fdocs.oracle.com%2Fjavase%2Ftutorial%2Fcollections%2Finterfaces%2Fexamples%2Fdictionary.txt%22&format=json&diagnostics=true&callback=callback'); 

window.go = function() { 
    var terms = file.split(' '); 

    for (var i = 0; i < 100; i++) 
     console.log(terms[i]) 
}; 

フィドルは最初の100をしていますが(私は願っています)アイデアを得ます。

+0

これはうまく見えます、私はこれを試してみる前にYQLを使用したことはありません。コード例をありがとう:) – JasonMortonNZ

1

ほとんどの場合、ファイルをメモリに読み込んだ後、行に解析するだけです。あなたがajax呼び出しでメモリ全体に読み込む場合は、data.split("\n")を使用して、行の配列に変換することができます。

+0

100k +ラインのファイルでこれを行った場合でも、それでも問題はないでしょうか? – JasonMortonNZ

+0

各行が100バイトの場合、ファイルを保持するためのRAMは10MBです。デスクトップコンピュータでは、それは問題ありません - 一部の画像はそれほど大きくありません。電話ではおそらくまだOKですが、それは良い考えではありません。 – jfriend00

0

このような操作のためにAjaxリクエストを開始する必要があります。 Ajaxでは推奨されていませんが、行ごとにファイルを読み込みます.JavaScriptはすべてクライアントサイドと制限付きアクセスについてのものであるため、プロセス内で負荷のかかるサーバーを作成することになります。サーバーへのAjaxリクエストは、近年追加されたアドオンです。

間違いなくいくつかのキーワードを使用して情報を検索しています。サーバー機能に検索ロジックを追加すると賢明です。特定の関数をAjax経由で呼び出し、結果セットをブラウザに返します。その関数は、結果を生成するファイルでもよいし、Webサービスでもよい。あなたはあなたの味を選ぶ。

代わりに、ファイル情報をJSON(about JSON)に再コーディングして、クライアントjsスクリプトにロールバックさせることもできます。私はXMLのためにこれを処理することでブラウザのメモリを大量に消費することを推奨しません。行ったことがある! :(JavaScriptはJSONをネイティブにサポートしているので、スムーズに行くでしょう。警告これはデータをローカルに公開します。

+0

私はjavascriptが私が構築している特定のアプリケーションのための正しい選択ではないと思います。私はJSONの経験はありませんが、余裕のある時間を見つけることができます。コメントありがとうございます。 – JasonMortonNZ