Есть ли способ прочитать файл по строкам в javascript, в частности, это file, который является словарем. Я пытался создать реплику Java-анаграмма-решателя, которую я сделал несколько месяцев назад, но попал в эту проблему из-за невозможности чтения файла по строкам. Я мог бы скачать файл и сохранить его локально, если это будет иметь значение для чтения.Вы можете читать строки за строкой в javascript?
ответ
Использование 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, но вы получите идею (я надеюсь).
Это выглядит хорошо, никогда не использовал YQL, поэтому я попробую. Спасибо за пример кода :) – JasonMortonNZ
В большинстве случаев вы можете просто прочитать файл в памяти и затем проанализировать его в строках. Если вы прочитали все это в памяти с помощью вызова ajax, вы можете просто использовать data.split("\n")
, чтобы преобразовать его в массив строк.
Если бы я сделал это в файле со 100k + строками, было бы все равно в порядке? – JasonMortonNZ
Если каждая строка была 100 байт, это будет 10 МБ ОЗУ для хранения файла. На настольном компьютере это прекрасно - некоторые изображения такие большие. На телефоне это, вероятно, не очень хорошая идея, хотя, возможно, все еще в порядке. – jfriend00
Вы должны инициировать запрос Ajax для такой операции. Чтение файла по строкам, хотя не рекомендуется с помощью Ajax, так как вы в конечном итоге создадите множество запросов сервера в процессе, так как JavaScript все касается клиентской стороны и ограниченного доступа. Ajax-запрос к серверу - это недавнее дополнение к нему.
Определенно вы ищете некоторую информацию, используя некоторые ключевые слова; поэтому было бы разумно добавить логику поиска в функции сервера; вызовите определенную функцию с помощью Ajax и верните результат в браузер. Эта функция может быть файлом, который генерирует результат или веб-службу. Вы выбираете свой аромат.
Альтернативный вариант заключается в перекодировании информации о файле в JSON (about JSON) при запуске и дайте ему перейти к скрипту js клиента. Я бы не рекомендовал XML для этого, так как он собирался загружать память браузера в терминах обработки. Был там! :(Поскольку JavaScript имеет встроенную поддержку JSON, он будет плавным. Предупреждение об этом предоставляет локальные данные.
Я думаю, что javascript не является правильным выбором для конкретного приложения, которое я создаю. У меня нет опыта работы с JSON, но я скоро буду изучать его, если найду какое-то свободное время (что редко бывает для меня). Спасибо за ваши комментарии. – JasonMortonNZ
Вы можете загрузить любые данные из своего собственного домена с помощью AJAX. Вы должны использовать XML-HTTP-запрос. – zzzzBov
Oh and если это не ваш домен, то нет, вы не можете этого сделать (если ваш браузер не глючит). Это нарушит правила запроса перекрестного происхождения. –
Поскольку Javascript в браузере не имеет доступа к файловой системе и только другой вариант заключается в том, чтобы переходить через сеть, вы действительно хотите идти туда и обратно на сервер в отдельных запросах на чтение файла понемногу? Возможно, это просто не подходящая среда для решения этой проблемы. – deceze