簡體   English   中英

nodejs空文檔fs.writeFile / appendFile

[英]nodejs empty document fs.writeFile/appendFile

我是使用nodejs編寫聊天日志機器人的新手。 現在效果很好。 幾個小時后除外。 該機器人會為每個用戶創建一個文檔,如果該文檔對於該用戶而言尚不存在,它將為該用戶鍵入一些內容,如果存在,則會將其放入該文件中。 這是我的代碼:

fs.open('logs/' + channel.substr(1) + '/' + user.username +'.txt','r',function(err,fd){
    if (err && err.code=='ENOENT') 
    {
    fs.writeFile('logs/' + channel.substr(1) + '/' + user.username +'.txt', '[' + 'GMT' + moment().format('Z ') + moment().format('D.M.YYYY H:mm:ss')  + '] ' + user.username + ': ' + message + '\n', function (err) {});
    } else {
    fs.appendFile('logs/' + channel.substr(1) + '/' + user.username +'.txt', '[' + 'GMT' + moment().format('Z ') + moment().format('D.M.YYYY H:mm:ss')  + '] ' + user.username + ': ' + message + '\n', function(){});    
    }
  });

問題是在幾個小時的用戶聊天后,新用戶的文檔最終還是空了。 保持聊天狀態的舊聊天者也不會在文件中添加新行。

我使用“ graceful-fs”模塊是因為我希望它可以解決此問題,但是我認為該模塊的變化不大。 我究竟做錯了什么? 為什么我的新.txt最終為空(0 kb大小)

打開文件描述符時,必須最終將其關閉( fs.close )。 每次運行該段代碼,都會泄漏文件描述符。 每個過程都限制為一定數量的文件描述符,具體取決於您的操作系統和設置。 用完時,任何需要打開文件的操作都不會成功。

你可以用

fs.appendFile(filename, data, {flag: "a+"}, callback)

如果存在,它將添加到文件中,否則將使用給定的數據創建文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM