Запись файлов в Node.js - PullRequest
       84

Запись файлов в Node.js

1440 голосов
/ 23 марта 2010

Я пытался найти способ записи в файл при использовании Node.js, но безуспешно. Как я могу это сделать?

Ответы [ 17 ]

4 голосов
/ 01 октября 2014

Здесь мы используем w + для чтения / записи обоих действий, и если путь к файлу не найден, он будет создан автоматически.

fs.open(path, 'w+', function(err, data) {
    if (err) {
        console.log("ERROR !! " + err);
    } else {
        fs.write(data, 'content', 0, 'content length', null, function(err) {
            if (err)
                console.log("ERROR !! " + err);
            fs.close(data, function() {
                console.log('written success');
            })
        });
    }
});

Контент означает, что вы должны записать в файл, и его длину, «content.length».

4 голосов
/ 28 апреля 2019

Полученные ответы датированы, и новый способ сделать это:

const fsPromises = require('fs').promises
await fsPromises.writeFile('/path/to/file.txt', 'data to write')

см. Документы здесь для получения дополнительной информации

3 голосов
/ 01 сентября 2017

Вот пример того, как прочитать файл csv из локального файла и записать файл csv в локальный файл.

var csvjson = require('csvjson'),
    fs = require('fs'),
    mongodb = require('mongodb'),
    MongoClient = mongodb.MongoClient,
    mongoDSN = 'mongodb://localhost:27017/test',
    collection;

function uploadcsvModule(){
    var data = fs.readFileSync( '/home/limitless/Downloads/orders_sample.csv', { encoding : 'utf8'});
    var importOptions = {
        delimiter : ',', // optional 
        quote     : '"' // optional 
    },ExportOptions = {
        delimiter   : ",",
        wrap        : false
    }
    var myobj = csvjson.toSchemaObject(data, importOptions)
    var exportArr = [], importArr = [];
    myobj.forEach(d=>{
        if(d.orderId==undefined || d.orderId=='') {
            exportArr.push(d)
        } else {
            importArr.push(d)
        }
    })
    var csv = csvjson.toCSV(exportArr, ExportOptions);
    MongoClient.connect(mongoDSN, function(error, db) {
        collection = db.collection("orders")
        collection.insertMany(importArr, function(err,result){
            fs.writeFile('/home/limitless/Downloads/orders_sample1.csv', csv, { encoding : 'utf8'});
            db.close();
        });            
    })
}

uploadcsvModule()
2 голосов
/ 18 января 2019

Вы можете записать в файл следующий пример кода:

  var data = [{'test': '123', 'test2': 'Lorem Ipsem '}];        
  fs.open(datapath + '/data/topplayers.json', 'wx', function(error, fileDescriptor){        
    if(!error && fileDescriptor){        
        var stringData = JSON.stringify(data);        
        fs.writeFile(fileDescriptor, stringData, function(error){        
            if(!error){        
                fs.close(fileDescriptor, function(error){        
                    if(!error){        
                        callback(false);        
                    }else{        
                        callback('Error in close file');        
                    }        
                });        
            }else{        
                callback('Error in writing file.');        
            }        
        });        
    }        
}        
2 голосов
/ 23 декабря 2018

fs.createWriteStream(path[,options])

options также может включать параметр start, позволяющий записывать данные в некоторой позиции после начала файла. Для изменения файла вместо его замены может потребоваться режим flags r+, а не режим по умолчанию w. Кодировка может быть любой из тех, которые приняты Buffer .

Если для autoClose установлено значение true (поведение по умолчанию) на 'error' или 'finish', дескриптор файла будет закрыт автоматически. Если autoClose равно false, дескриптор файла не будет закрыт, даже если произошла ошибка. Приложение должно закрыть его и убедиться в отсутствии утечки файлового дескриптора.

Как и ReadStream , если указано fd, WriteStream будет игнорировать аргумент path и будет использовать указанный дескриптор файла. Это означает, что событие 'open' не будет отправлено. fd должно блокировать; неблокирующие fd s должны быть переданы в net.Socket .

Если options - строка, то она указывает кодировку.

После прочтения этой длинной статьи. Вы должны понимать, как это работает. Итак, вот пример createWriteStream().

/* The fs.createWriteStream() returns an (WritableStream {aka} internal.Writeable) and we want the encoding as 'utf'-8 */
/* The WriteableStream has the method write() */
fs.createWriteStream('out.txt', 'utf-8')
.write('hello world');
1 голос
/ 04 мая 2016

Вы можете использовать библиотеку easy-file-manager

сначала установить с npm npm install easy-file-manager

Пример загрузки и удаления файлов

var filemanager = require('easy-file-manager')
var path = "/public"
var filename = "test.jpg"
var data; // buffered image

filemanager.upload(path,filename,data,function(err){
    if (err) console.log(err);
});

filemanager.remove(path,"aa,filename,function(isSuccess){
    if (err) console.log(err);
});
0 голосов
/ 11 января 2019

Попробуйте следующее:

fs.readFile(`${__dirname}/fileName`, 'utf-8',(err, contents) => {
    if (err) throw Error(err){
        console.log(contents)
    }
});
...