Я подумываю перенести некоторые из своих кроссплатформенных скриптов на node.js отчасти для изучения node.js, отчасти потому, что в последнее время я лучше знаком с JavaScript, а отчасти из-за проблем с поддержкой больших файлов в других языках сценариев.
Некоторые языки сценариев, по-видимому, имеют неоднородную поддержку больших смещений файлов, в зависимости от таких вещей, как то, работают ли они на 32-/64-разрядной ОС или процессоре или должны быть специально скомпилированы с определенными флагами.
Поэтому я все равно хочу поэкспериментировать с node.js, но в Google я не нашел многого в его поддержке (или поддержке библиотеки/фреймворка и т. д.) для больших файлов с 64-битными смещениями.
Я понимаю, что в некоторой степени это будет зависеть, по крайней мере, от базовой целочисленной поддержки JavaScript. Если я правильно прочитал Что такое Max Int в JavaScript? К какому максимальному целочисленному значению может перейти число без потери точности? кажется, что JavaScript использует внутри себя числа с плавающей запятой даже для целых чисел и, следовательно,
наибольшее точное целочисленное значение равно 253
Опять же, node.js предназначен для серверов, а серверы должны рассчитывать на поддержку больших файлов.
Поддерживает ли node.js смещение 64-битных файлов?
ОБНОВЛЕНИЕ
Несмотря на флаги сборки _LARGEFILE_SOURCE
и _FILE_OFFSET_BITS
, теперь, когда я начал портировать свой проект, который требует этого, я обнаружил, что fs.read(files.d.fd, chunk, 0, 1023, 0x7fffffff, function (err, bytesRead, data)
удается, а 0x80000000
терпит неудачу с EINVAL
. Это с версией v0.6.11
, работающей на 32-битной Windows 7.
Пока я не уверен, является ли это ограничением только в fs
, ошибкой в node.js или проблемой только на сборках Windows.
Предполагается ли, что смещения файлов больше 31 бита будут работать в node.js во всех основных модулях на всех платформах?
offset = getOffsetFromIndex(...); dumpFile.seek(offset); line = dumpFile.readLine();
Я не знаю, очень ли это полезно, это совершенно общее использование смещений файлов. По сути, у меня есть индекс, который я сделал из произвольных файлов дампа MediaWiki, который может быть огромным . У меня есть набор инструментов, которые создают эти индексные файлы и используют их для извлечения произвольной информации из файлов дампа без необходимости анализировать многие гигабайты XML. Perl и C до сих пор. - person hippietrail   schedule 01.12.2012dumps
, подождал, пока панель URL найдет соответствующие URL-адреса, использовал стрелку вниз, чтобы перейти к нужному, затем нажал CTRL + C, фактически не переходя на страницу. Я знаю, что Chrome получает частьhttp://
, когда вы на самом деле находитесь на странице. У меня есть талант находить пограничные случаи (-; - person hippietrail   schedule 01.12.2012