Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.05.2012, 11:55
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Node.js и файловая система
Всем привет! Вот взялся изучать Node и работу с файловой системой и возникла проблема:

// открываю файл, всё ок
fs.open('foo.txt', 'a+', function (er, fd) {
	
	// пытаюсь записать данные,
	// однако интепретатор ругается на параметр 5,
	// ошибка сообщает, что данный параметр должен быть функцией,
	// однако в документации сказано, что это позиция в документе для записи
	fs.write(fd, '"a":1', 0, 100, 5, function (err, written, buffer) {
		console.log(buffer);
	});
});


Если вместо позиции написать сразу callback, то всё ок, но тогда я не понимаю, как указать позицию для записи.

Заранее всем спасибо!
__________________
kobezzza
code monkey
Ответить с цитированием
  #2 (permalink)  
Старый 07.05.2012, 12:06
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

смещение от начала файла ... подразумевает ли это, что в файле что-нибудь должно быть?
Ответить с цитированием
  #3 (permalink)  
Старый 07.05.2012, 12:08
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Да, в файле есть данные, я открываю в режиме дополнения (a+). Посмотрел код функции write и совсем запутался Оо
__________________
kobezzza
code monkey
Ответить с цитированием
  #4 (permalink)  
Старый 07.05.2012, 15:37
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

А что там сложного-то?
function (fd, buffer, offset, length, position, callback) {
*!*
  if (!Buffer.isBuffer(buffer)) {
    // legacy string interface (fd, data, position, encoding, callback)
    callback = arguments[4];
    position = arguments[2];

    buffer = new Buffer('' + arguments[1], arguments[3]);
    offset = 0;
    length = buffer.length;
  }
*/!*

  if (!length) {
    if (typeof callback == 'function') {
      process.nextTick(function() {
        callback(undefined, 0);
      });
    }
    return;
  }

  function wrapper(err, written) {
    // Retain a reference to buffer so that it can't be GC'ed too soon.
    callback && callback(err, written || 0, buffer);
  }

  binding.write(fd, buffer, offset, length, position, wrapper);
}
Очевидно, строка — не буфер.
Ответить с цитированием
  #5 (permalink)  
Старый 07.05.2012, 16:13
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Спасибо за разъяснение!
__________________
kobezzza
code monkey
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XMPP + Node.js FINoM AJAX и COMET 21 20.12.2013 14:29
Javascript-разработчик (ExtJS, node.js), 50 000 - 80 000, СПб IrinaS Работа 0 03.04.2012 20:40
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55
Node.js Kolyaj Серверные языки и технологии 49 24.05.2010 22:29
файловая система и js - возможно ли? jestalnar Общие вопросы Javascript 3 12.06.2009 19:24