LINUX.ORG.RU

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

 ,


0

2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Начал сейчас разбиратьмя с 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 ()
Ответ на: комментарий от linearisation

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

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

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

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

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

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

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

linearisation ()