LINUX.ORG.RU

вопрос по работе с файлами в nodejs

 ,


0

2

ЕМНИП, в ноде нет явного указания на открытие файла, и его закрытие. Я так понимаю, что это все автоматически происходит, подковерно.

Но вот, насколько эффективно будет, если я сначала, допустим, синхронно прочитал файл, потом тут же его надо записать. Он дважды будет открываться и закрываться в таком случае?

nodejs

эффективно

ты бы ещё на ноль разделил

Goury ★★★★★
()
Ответ на: комментарий от surefire

Кстати, один х, намутили они, суки. Нет бы просто сделать file open, как у люде, бл, там с аргументами замучаешься разбираться, требует оффсет, буфер и еще кучу дерьма, и в документации подробно не разжевано, только типы аргументов указаны.

linearisation
() автор топика
Ответ на: комментарий от linearisation

там с аргументами замучаешься разбираться, требует оффсет, буфер и еще кучу дерьма

Вообще-то это и называется, как у людей.

int64
()
Ответ на: комментарий от linearisation
const fd = fs.openSync('/path/to/file', fs.constants.O_CREAT | fs.constants.O_RDWR | fs.constants.O_EXCL);

Я уж и не знаю, как может быть проще. Это просто биндинг к системному вызову open и практически полностью его повторяет.

По моему это просто не твоё.

surefire ★★★
()
Ответ на: комментарий от int64

хз, на Io, например, я пишу file do(open; content = read; close), вот это я называю как у людей(у белых). А это называется херовый непродуманный, неадекватный дизайн.

linearisation
() автор топика
Ответ на: комментарий от leave

Там есть интерфейс для тонкой работы с файлами, но это только если надо. А тут — принудительно.

linearisation
() автор топика
Ответ на: комментарий от linearisation

Ну так ты хотел явно.

А хочешь явно, делай явно. Ты сам должен знать решать, куда buffer с какого места offset, сколько length, с какой позиции файла position читать. Последнее может быть null тогда будет читать с текущей позиции.

surefire ★★★
()
Ответ на: комментарий от surefire

Спасибо большое за ответы.

Ну так ты хотел явно.

я хотел явно, но без лишнего дерьма. Мой вопрос касался только открытия файла, все остальное мне на данный момент не нужно. Сраные разработчики ноды не умеют строить адекватные абстракции.

linearisation
() автор топика
Ответ на: комментарий от surefire

уж лучше бы оставили одни биндинги к v8, и не пытались делать вид, что они пилят какую то там среду разработки:) Реально проще было бы, я серьезно.

linearisation
() автор топика
Ответ на: комментарий от surefire

Понимаешь, это очень напрягает, когда тебе нужно просто открыть файл, прочитать, записать и закрыть, 2 дня разбираться с тем, как это все сделать, и потом еще тестировать и отлаживать. Особенно когда эти господа интерфейсы меняют раз в месяц, постоянно deprecated висит, постоянно они, б**ть ошибаются, находят более лучшее и тд, они реально задрали, это дети какие то, а не разрабы.

Начал сейчас разбиратьмя с Buffer(тоже кстати, снова новый интерфейс), и с *радостью* обнаружил, что нельзя задать __просто__ размер и кодировку, там опять какие то чудеса, которых я не знаю, опять надо разбираться. Когда работу делать если только и знаешь, что по документации лазишь?

linearisation
() автор топика
Ответ на: комментарий от surefire

вот так вот я щас написал

...

var buffer = Buffer.alloc(1000, 0, "utf8")
fs.readSync(descriptor, buffer, 0, buffer.length, 0)
console.log(buffer + "")

...
Нихрена там нет. Что не так?

linearisation
() автор топика
Ответ на: комментарий от linearisation

интерфейсы меняют раз в месяц

fs.openSync(path, flags[, mode])
Added in: v0.1.21

fs.readSync(fd, buffer, offset, length, position)
Added in: v0.1.21

Текущая версия 7.2.1

surefire ★★★
()
Ответ на: комментарий от surefire

я не конкретно за этот, вообще. Пример — тот же Buffer

linearisation
() автор топика
Ответ на: комментарий от linearisation

w+, он по ходу, файл почему то стирал вообще. п*ц.

почему то стирал

почему то

'w+' - Open file for reading and writing. The file is created (if it does not exist) or truncated (if it exists).

Я показал пример, используй системные флаги, они более чёткие.

surefire ★★★
()
Ответ на: комментарий от deadNightTiger

Сказать по честному, время жалко. У меня были мысли за него взяться, но, времени жалко, не вижу реальных оснований. Изучать из-за того, что авторы фреймверка передирают сишные фишки в свое говно, недостаточное основание:) Системным программированием я не занимаюсь.

Кстати, не исключено, что си, таки издохнет в ближайшее время, вместе с производными, так как он себя исчерпал. Его основная задача изначально была в кроссплатформенности, сейчас же его используют непонятно почему, из-за религиозных соображений, видимо. По скорости он неудовлетворителен для того, чтобы считаться низкоуровневым ЯП, в качестве высокоуровнего его использовать глупо, из-за его слабости, кросплатформенность он не обеспечивает, остается только легаси и религиозные предпочтения.

linearisation
() автор топика

Для вас же, вебмакак, Web-Development придумали!

anonymous
()
Ответ на: комментарий от linearisation

Зачем открывать файл для рисования круга?

cdshines ★★★★★
()
Ответ на: комментарий от linearisation

флаг в fs.open стоял w+, он по ходу, файл почему то стирал вообще

Как минимум в Python и в Си строго по документации происходит то же самое ;) В плане, содержимое обнуляется. Если ты говоришь что такой файл перестает существовать вообще - вот это тогда странно.

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

да нет, он просто обнуляется. но не понятно, зачем нужен такой флаг, если обнулить его можно и явно. Какой то мусор, который вводит в заблуждение.

linearisation
() автор топика
Ответ на: комментарий от linearisation

Вспомнил - в языке Verilog тоже такое поведение. А если надо дописать - можно и явно открыть с флагом append. Почему так? Потому что этим флагам быть может лет 50.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от linearisation

намутили они, суки
Нет бы как у люде, бл

Ну так это JavaScript.
Зачем использовать его там, где можно не использовать?
Напиши лоад балансер, а остальной бэк-энд на нормальном языке. Блин, дочитал тред... Не, не пиши.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Shadow

Да уж, читал тут твои вопросы, программист ты сильный конечно. Память хреновая, но тебя запомнил, как отдельный феномен, типа, как же решить вопрос про «кросплатформенности» find, lol. Тут, кроме тебя только один экземпляр есть, который тебя переплюнул, мастер циклов, «кюринга» и трансляторов с китайского

linearisation
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.