Node.JS C ++ Native Addon для чтения / записи файлов?

Текущая проблема, с которой я сталкиваюсь в своем проекте, заключается в том, что я не знаю, как читать / записывать файлы из собственного дополнения node.js.

Я должен построить тип шифрования дешифрования (алгоритм RC6). Но для того, чтобы зашифровать файлы, я должен иметь возможность каким-то образом читать и записывать их из «node-webkit». Я строю файл .cc с помощью nw-gyp и пробовал несколько возможностей, но ни одна из них не работала.

Я строю свой проект с помощью «grunt-node-webkit-builder» и просто хочу прочитать / записать один файл из папки сборки «nw», где находится nw.exe.

Структура выглядит так:

.webkitbuilds
.releases
.nw
.win
.nw
encrypt.txt
ffmpegsumo.dll
icudt.dll
libEGL.dll
libGLESv2.dll
nw.exe
nw.pak

Как я могу прочитать в моем дополнении c ++ native node.js этот файл «encrypt.txt».

Помогите ?

Редактировать:

Есть ли способ использовать libuv с crypto ++?

РЕДАКТИРОВАТЬ 2:

У меня есть следующий код. В тот момент, когда я его выполняю, окно зависает.

hello.cc:

#include <node.h>
#include <v8.h>
#include <stdio.h>
#include <fcntl.h>

using namespace v8;

#define __S_IREAD       0400    /* Read by owner.  */
#define __S_IWRITE      0200    /* Write by owner.  */
#define __S_IEXEC       0100    /* Execute by owner.  */

#define S_IRUSR __S_IREAD       /* Read by owner.  */uv_loop_t* loop;

uv_fs_t open_req;

void open_cb(uv_fs_t* req);

const char* path = "encrypt.txt";

void open_cb(uv_fs_t* req) {
int result = req->result;

if (result == -1) {
fprintf(stderr, "Error at opening file: %s\n",
uv_strerror(uv_last_error(loop)));
}

uv_fs_req_cleanup(req);

printf("Successfully opened file.\n");
}

char *get(v8::Local<v8::Value> value, const char *fallback = "") {
if (value->IsString()) {
v8::String::AsciiValue string(value);
char *str = (char *) malloc(string.length() + 1);
strcpy(str, *string);
return str;
}
char *str = (char *) malloc(strlen(fallback) + 1);
strcpy(str, fallback);
return str;
}Handle<Value> Encrypt(const Arguments& args) {
HandleScope scope;

char* textToEncrypt = get(args[0], "str");
char* password = get(args[1], "str");

loop = uv_default_loop();

int r = uv_fs_open(loop, &open_req, path, O_RDONLY, S_IRUSR, open_cb);

if (r) {
fprintf(stderr, "Error at opening file: %s\n",
uv_strerror(uv_last_error(loop)));
}

uv_run(loop, UV_RUN_DEFAULT);

return scope.Close(String::New("done"));
}

void Init(Handle<Object> exports) {
exports->Set(String::NewSymbol("Encrypt"),
FunctionTemplate::New(Encrypt)->GetFunction());
}

NODE_MODULE(hello, Init)

В Javascript:

var application = require('./js/build/Release/hello');

var encrypted_data = "";

$(document).ready(function() {
$('#btn_encrypt').on('click', function() {

encrypted_data = application.Encrypt("val","val");
console.log(encrypted_data);
})
});

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]