JavaScriptでファイルを1行ずつ読み取る方法はありますか。具体的には、辞書であるこのファイルです。数か月前に作成した Java アナグラム ソルバーのレプリカを作成しようとしていましたが、ファイルを 1 行ずつ読み取れないというこの問題にぶつかりました。ファイルをダウンロードしてローカルに保存することで、読み取りが可能になる場合があります。
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
フィドルは次のようになります。
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 のみを実行しますが、アイデアは得られます (願っています)。
ほとんどの場合、ファイルをメモリに読み込んで、それを行に解析するだけで済みます。ajax 呼び出しですべてをメモリに読み込む場合は、data.split("\n")
それを行の配列に変換するために使用できます。
そのような操作に対して Ajax リクエストを開始する必要があります。ファイルを 1 行ずつ読み取ることはお勧めしませんが、Ajax 経由ではお勧めしません。JavaScript はすべてクライアント側に関するものであり、アクセスも制限されているためです。サーバーへのAjaxリクエストは、近年のアドオンです。
確かに、いくつかのキーワードを使用していくつかの情報を検索しています。そのため、サーバー関数に検索ロジックを追加することをお勧めします。Ajax を介して特定の関数を呼び出し、結果セットをブラウザーに返します。その関数は、結果を生成するファイルまたは Web サービスである可能性があります。あなたはあなたの味を選びます。
別のオプションは、開始時にファイル情報を JSON ( about JSON )に再コーディングし、クライアント js スクリプトにロールさせることです。XML は、処理中にブラウザのメモリを大量に消費するため、XML はお勧めしません。行ったことがある!:(。JavaScript は JSON をネイティブにサポートしているため、スムーズに動作します。警告 これにより、データがローカルに公開されます。