Node.js හි ගොනු ලිවීම


1668

මම Node.js භාවිතා කරන විට ගොනුවකට ලිවීමට ක්‍රමයක් සෙවීමට උත්සාහ කළ නමුත් එය සාර්ථක නොවීය. මට එය කළ හැක්කේ කෙසේද?

Answers:


2499

ගොනු පද්ධති API හි බොහෝ විස්තර තිබේ . වඩාත් පොදු ක්‍රමය නම්:

const fs = require('fs');

fs.writeFile("/tmp/test", "Hey there!", function(err) {
    if(err) {
        return console.log(err);
    }
    console.log("The file was saved!");
}); 

// Or
fs.writeFileSync('/tmp/test-sync', 'Hey there!');

27
මම මෙම ස්ක්‍රිප්ට් එක නෝඩ් භාවිතයෙන් පරීක්ෂා කර ඇති අතර, ගොනු මාර්ගය "/ home /" ලෙස වෙනස් කිරීමට මම උත්සාහ කළෙමි, නමුත් මට පහත දෝෂය ඇතිවිය: { [Error: EACCES, open '/home/test.txt'] errno: 3, code: 'EACCES', path: '/home/test.txt' } මෙම ස්ක්‍රිප්ට් එක පිටත ක්‍රියාත්මක වන පරිදි වෙනස් /tmpකරන්නේ කෙසේද?
ඇන්ඩර්සන් ග්‍රීන්

130
එකම දේ සමමුහුර්තව ඉටු කිරීම සඳහා ඔබට fs.writeFileSync (...) භාවිතා කළ හැකි බව සලකන්න.
ඩේවිඩ් අර්වින්

7
සමහර විට එය ටිකක් පරණයි, නමුත් nd ඇන්ඩර්සන් ග්‍රීන්, වත්මන් නෝඩ් ක්‍රියාවලි හිමිකරුට (ඔබේ පරිශීලක නාමය දැඩි) R / W අවසර ලබා දීම සඳහා ඔබ නිසි ලෙස root හෝ chmod / home ලෙස ධාවනය කළ යුතුය, එවිට ඔබට ගොනුව ලිවිය හැකිය
ඩෙනිස් විටාලි

41
ඇත්ත වශයෙන්ම, en ඩෙනිස්විටාලි, ගැටළුව වන්නේ ජේන්ට කිසිදු ලිපිගොනු ලිවීමට නොහැකි වීමයි /home/.... සාමාන්‍යයෙන් එම නාමාවලිය මූල 755 වේ: රෝදය (හෝ ඕනෑම දෙයක්). නෝඩයට ජේන් ලෙස ගොනුවක් ලිවීමට අවශ්‍ය නම්, එය ලිවීමට පහසු වනු ඇත /home/jane/test.txt. /home755 ට වඩා අවසර ලත් දෙයකට වෙනස් කිරීම විශාල වැරැද්දකි.
ජේන් චාප

8
An ජේන් ඇවරියට් හොඳයි, ඔහුට /homeඩිරෙක්ටරියේ ගොනුව සුරැකීමට අවශ්‍ය බැවින් මම එය chmod කිරීමට යෝජනා කළෙමි. මම දන්නවා එය ආරක්ෂක ගැටළුවක් ඇති කළ හැකි බව. නමුත් හොඳයි, පරිශීලකයාට එහි සුරැකීමට අවශ්‍ය නම්, එය විසඳුමයි. PS: ඔබ කී දෙයට මම එකඟයි (:
ඩෙනිස් විටාලි

543

ගොනුවක් ලිවීමට දැනට ක්‍රම තුනක් තිබේ:

  1. fs.write(fd, buffer, offset, length, position, callback)

    බෆරය තැටියට ලියා ඇති බව සහතික කිරීම සඳහා ඔබ ඇමතුම ලබා ගැනීම සඳහා බලා සිටිය යුතුය. එය ආරක්ෂිත නොවේ.

  2. fs.writeFile(filename, data, [encoding], callback)

    සියලුම දත්ත එකවර ගබඩා කළ යුතුය; ඔබට අනුක්‍රමික ලිවීම් කළ නොහැක.

  3. fs.createWriteStream(path, [options])

    සාදනු WriteStreamඔබ callback සඳහා බලා සිටීමට අවශ්ය නැති නිසා පහසු වන. නමුත් නැවතත්, එය ආරක්ෂිත නොවේ.

A WriteStream, නම පවසන පරිදි, ධාරාවකි. අර්ථ දැක්වීම අනුව ප්‍රවාහයක් යනු එක් දිශාවකට (ප්‍රභව ► ගමනාන්තය) ගමන් කරන දත්ත අඩංගු “බෆරයක්” වේ. නමුත් ලිවිය හැකි ප්‍රවාහයක් අනිවාර්යයෙන්ම “බෆර්” නොවේ. ඔබ nවේලාවන් ලියන විට ධාරාවක් “ n+1ස්වාරක්ෂක” වන අතර, එම අවස්ථාවේ දී, ධාරාව කර්නලය වෙත බෆරය යවයි (මන්ද එය පිරී ඇති අතර එය පිස දැමිය යුතු බැවිනි).

වෙනත් වචන වලින් කිවහොත්: “බෆරය” යනු වස්තුවයි. එය “බෆර් කර තිබේද” යන්න එම වස්තුවේ දේපලකි.

ඔබ කේතය දෙස බැලුවහොත්, WriteStreamලිවිය හැකි Streamවස්තුවකින් උරුම වේ . ඔබ අවධානය යොමු කරන්නේ නම්, ඔවුන් අන්තර්ගතය ගලවන ආකාරය ඔබට පෙනෙනු ඇත; ඔවුන්ට කිසිදු බෆරින් පද්ධතියක් නොමැත.

ඔබ නූලක් ලියන්නේ නම්, එය බෆරයක් බවට පරිවර්තනය කර, පසුව ස්වදේශීය ස්ථරයට යවා තැටියට ලියා ඇත. නූල් ලියන විට, ඔවුන් කිසිදු බෆරයක් පුරවන්නේ නැත. එබැවින්, ඔබ එසේ කරන්නේ නම්:

write("a")
write("b")
write("c")

ඔබ කරනවා:

fs.write(new Buffer("a"))
fs.write(new Buffer("b"))
fs.write(new Buffer("c"))

එය I / O ස්තරයට ඇමතුම් තුනක් . ඔබ “බෆර” භාවිතා කළද, දත්ත ආරක්ෂිත නොවේ. ස්වාරක්ෂක ප්‍රවාහයක් කරන්නේ : fs.write(new Buffer ("abc")), I / O ස්තරයට එක් ඇමතුමක්.

මේ වන විට, Node.js v0.12 හි (ස්ථාවර අනුවාදය 02/06/2015 නිවේදනය කර ඇත) දැන් කාර්යයන් දෙකකට සහය දක්වයි: cork()සහ uncork(). මෙම කාර්යයන් අවසානයේ ඔබට ලිවීමේ ඇමතුම් බෆර් / ෆ්ලෂ් කිරීමට ඉඩ දෙන බව පෙනේ.

උදාහරණයක් ලෙස, ජාවා හි ස්වාරක්ෂක ධාරාවන් සපයන පන්ති කිහිපයක් ඇත ( BufferedOutputStream, BufferedWriter...). ඔබ බයිට් තුනක් ලියන්නේ නම්, මෙම බයිට් බයිට් තුනක් සඳහා I / O ඇමතුමක් ලබා ගැනීම වෙනුවට බෆරයේ (මතකය) ගබඩා වේ. බෆරය පිරී ඇති විට අන්තර්ගතය ෆ්ලෂ් කර තැටියට සුරකිනු ලැබේ. මෙය කාර්ය සාධනය වැඩි දියුණු කරයි.

මම කිසිවක් සොයා නොගත්තෙමි, තැටියට ප්‍රවේශ විය යුතු ආකාරය මතක තබා ගන්න.


5
+1 - හොඳ පැහැදිලි කිරීමක්. ලිවීමේ ප්‍රවාහය සඳහා, ලේඛය ප්‍රවේශමෙන් කියවීම වැදගත්ය. ව්‍යාජ හෝ වසා දැමීම් ආපසු එවන්නේ නම්, writer.once ('කාණු', ශ්‍රිතය () call call) ඇමතීම වැදගත් වේ හෝ ක්‍රියාවලිය අවසන් වූ විට සිඳී නොගිය රේඛා මට මග හැරුණි.
බ්‍රයන්මාක්

4
පූර්ව මුදාහැරීමේ 0.11 නෝඩය අත්හදා බැලීමට කැමති අය සඳහා cork()සහ භාවිතා කළ යුතු ආකාරය පිළිබඳ උදාහරණයක් ඔබට ලබා දිය හැකි යම් අවස්ථාවක් uncork()තිබේද?
proformeowingtons

මේ වන විට, Node v0.12 ස්ථායී වේ.
aug

GitHub හි කේත විශ්ලේෂණයකට අනුව, fs.writeFile ඔබ සඳහන් කළ කාර්යයන් අතර වඩාත් ජනප්‍රිය බව පෙනේ. Fs.writeFile භාවිතා කිරීම සඳහා සැබෑ ලෝක උදාහරණ
drorw

npmස්වාරක්ෂක ලිවීම ක්‍රියාත්මක කිරීම සඳහා නිෂ්පාදන ගුණාත්මක පුස්තකාල තිබේද?
nponeccop

271

ඔබට එය තව ටිකක් දියුණු කළ හැකිය. අවහිර නොකිරීම, බිටු සහ කෑලි ලිවීම, සම්පූර්ණ ගොනුව එකවරම ලිවීම නොවේ:

var fs = require('fs');
var stream = fs.createWriteStream("my_file.txt");
stream.once('open', function(fd) {
  stream.write("My first row\n");
  stream.write("My second row\n");
  stream.end();
});

17
Stream.once සඳහා ඇමතුම් ලබා දෙන 'fd' විචල්‍යය කුමක්ද?
ස්කොට් ටෙස්ලර්

1
C ස්කොට් ඩේවිඩ් ටෙස්ලර් ලිපිගොනු විස්තරය, එවිට ඔබ එය කළ පසු ධාරාව වසා දැමිය හැකිය.
ඇලෙක්සි කමෙන්ස්කි

3
මම ධාරාව වසා දැමිය යුත්තේ කවදාද? මෙය අවහිර නොකිරීමට හේතුව කුමක්ද? කුතුහලයෙන් යුතුව, මම ලොග් ගොනුවකට ලිවීමට උත්සාහ කරමි.
CloudMeta

1
ධාරාව ගලා යන විට මට විශ්වාස නැත. මගේ අනුමානය නම් ඉල්ලුම මත ධාරාව ගලායාමේ හැකියාවක් ඇති බවයි.
ෆෙඩ්රික් ඇන්ඩර්සන්

1
O ජොලිස් ඔබට ඒ සඳහා බලා සිටීමට සිදුවනු ඇත.
ෆෙඩ්රික් ඇන්ඩර්සන්

64

සමමුහුර්ත ලිවීම

fs.writeFileSync (ගොනුව, දත්ත [, විකල්ප])

fs = require('fs');

fs.writeFileSync("synchronous.txt", "synchronous write!")

අසමමුහුර්ත ලිවීම

fs.writeFile (ගොනුව, දත්ත [, විකල්ප], ඇමතුම් ආපසු)

fs = require('fs');

fs.writeFile('asynchronous.txt', 'asynchronous write!', (err) => {
  if (err) throw err;
  console.log('The file has been saved!');
});

කොහෙද

file <string> | <Buffer> | <URL> | <integer> filename or file descriptor
data <string> | <Buffer> | <Uint8Array>
options <Object> | <string>
callback <Function>

අක්‍රීය ගොනු පද්ධතිය (fs) ලියකියවිලි කියවීම වටී .


54
var path = 'public/uploads/file.txt',
buffer = new Buffer("some content\n");

fs.open(path, 'w', function(err, fd) {
    if (err) {
        throw 'error opening file: ' + err;
    }

    fs.write(fd, buffer, 0, buffer.length, null, function(err) {
        if (err) throw 'error writing file: ' + err;
        fs.close(fd, function() {
            console.log('file written');
        })
    });
});

2
පහළ මට්ටමේ fs මෙහෙයුම් භාවිතා කරමින් ගොනුවක් ලිවිය යුතු ආකාරය මෙයින් පෙන්නුම් කෙරේ. උදාහරණයක් ලෙස, ගොනුව තැටියට ලිවීම අවසන් කර ගොනු විස්තර නිකුත් කළ විට ඔබට සහතික විය හැකිය.
ෂෝන් ග්ලෝවර්

මෙම උදාහරණයේ දී ඕෆ්සෙට් '0' (= තුන්වන පරාමිතිය fs.write()) ලෙස සකසා ඇත්නම්, මෙම උදාහරණය ක්‍රියාත්මක වන්නේ සෑම දෙයක්ම තනි ලිඛිත ඇමතුමකින් ලිවීමට තරම් කෙටි නම් පමණි.
මෑන්ෆ්‍රඩ්

33

මම ./articles/file-system හි දර්ශකයට කැමතියි .

එය මට වැඩ කළා.

මෙයද බලන්න මම node.js ගොනු ලියන්නේ කෙසේද? .

fs = require('fs');
fs.writeFile('helloworld.txt', 'Hello World!', function (err) {
    if (err) 
        return console.log(err);
    console.log('Wrote Hello World in file helloworld.txt, just check it');
});

Helloworld.txt හි අන්තර්ගතය:

Hello World!

යාවත්කාලීන කිරීම:
වත්මන් නාමාවලියෙහි ලිනක්ස් නෝඩ් ලිවීමේදී මෙන්, තවත් සමහරුන් එසේ නොකරන බව පෙනේ, එබැවින් මම මෙම අදහස එක් කරන්නේ එක් අවස්ථාවකදී ය: ගොනුව ලියා ඇති ස්ථානය ලබා ගැනීමට
මෙය භාවිතා ROOT_APP_PATH = fs.realpathSync('.'); console.log(ROOT_APP_PATH);කිරීම.


Helloworld.txt ගොනුව සොයාගත හැක්කේ කොතැනින්ද? මට එය කිසිදු ෆෝල්ඩරයකින් සොයාගත නොහැක ... ස්තූතියි.
කයි ෆෙන් චව්

ඔබ ස්ක්‍රිප්ට් ධාවනය කරන ෆෝල්ඩරයේ
සර්ජියෝ

ඒක අමුතුයි ... මට ඒක කොහේවත් හොයාගන්න බැහැ. එය සැඟවිය හැකිද? නැවතත් ස්තූතියි ~
කයි ෆෙන් චව්

6
මම ඒක හොයාගත්තා. මෙම ROOT_APP_PATH = fs.realpathSync ('.') භාවිතා කිරීම; console.log ( ROOT_APP_PATH ); මගේ ලිපිගොනුව ලියන තැන ලබා ගැනීමට. ස්තූතියි.
කයි ෆෙන් චව්

@ සර්ජියෝ: අපට ලිවීමේ ගොනුව වැසීමට අවශ්‍යද? මම වෙනත් ක්‍රියාවලියක් අමතමින් සිටින අතර මට වෙනත් දෝෂයක් ලැබෙමින් පවතී.
අමීර්

27

ලබා දී ඇති පිළිතුරු දින වකවානු වන අතර මෙය කිරීමට නව ක්‍රමයක් වන්නේ:

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

වැඩි විස්තර සඳහා මෙහි ලේඛන බලන්න


1
(node:23759) ExperimentalWarning: The fs.promises API is experimental
jgraup

grajgraup: ඔබ භාවිතා කරන්නේ නෝඩයේ නවතම අනුවාදයද?
TrevTheDev

Nodev10.15.0
jgraup

8
සංවෘත ශ්‍රිතය අසමමුහුර්ත විය යුතුය හෝ මෙය ක්‍රියා නොකරනු ඇත.
සිමානෝ

1
ter වින්ටර්කවුන්ටර් ඒක හරිම මිහිරි!
සිමානෝ

22

"ලිවීම" ගැන ඇසූ ප්‍රශ්නය මම දනිමි, නමුත් වඩාත් සාමාන්‍ය අර්ථයෙන් "උපග්‍රන්ථය" සමහර අවස්ථාවලදී ප්‍රයෝජනවත් විය හැකි බැවින් ගොනුවකට පෙළ එක් කිරීම සඳහා ලූපයක් භාවිතා කිරීම පහසුය (ගොනුව තිබේද නැද්ද යන්න). ඔබට පේළි එක් කිරීමට අවශ්‍ය නම් "\ n" භාවිතා කරන්න උදා:

var fs = require('fs');
for (var i=0; i<10; i++){
    fs.appendFileSync("junk.csv", "Line:"+i+"\n");
}

එය දැන් පවතින බැවින් අනවශ්‍ය අතුරු ආබාධ වළක්වා ගැනීම සඳහා, විශේෂයෙන් ඔබ තරමක් විශාල කේත පදනමක් සමඟ වැඩ කරන්නේ නම් , constඒ වෙනුවට භාවිතා කිරීම නිර්දේශ කරමි . varconst fs = require('fs');
මෑන්ෆ්‍රඩ්

13

හරි, එය node එකක් මතම ඊට අදාල මේ සඳහා ක්රියාකාරිත්වය ඉදි-ඇති පරිදි, එයට අමතන්නේ ඉතා සරලයි fsසඳහා කි්රයා කරන ගොනු පද්ධතිය හා මූලික වශයෙන්, NodeJS ගොනු පද්ධතිය මොඩියුලය ...

එබැවින් පළමුව ඔබේ server.js ගොනුවට මෙය අවශ්‍ය වේ:

var fs = require('fs');

fsගොනුවට ලිවීමට ක්‍රම කිහිපයක් ඇත, නමුත් මා කැමති ක්‍රමය භාවිතා කරයි appendFile, මෙය ගොනුවට දේවල් එකතු කරන අතර ගොනුව නොපවතින විට එකක් නිර්මාණය කරයි, කේතය පහත පරිදි විය හැකිය:

fs.appendFile('myFile.txt', 'Hi Ali!', function (err) {
  if (err) throw err;
  console.log('Thanks, It\'s saved to the file!');
});

3
නූලෙහි තනි උපුටා දැක්වීමක් ගැලවිය යුතුය.
ටමර්

12

ඔබට fs (ගොනු පද්ධතිය) මොඩියුලය භාවිතා කර ගොනුවකට ලිවිය හැකිය .

ඔබට එය කළ හැකි ආකාරය පිළිබඳ උදාහරණයක් මෙන්න:

const fs = require('fs');

const writeToFile = (fileName, callback) => {
  fs.open(fileName, 'wx', (error, fileDescriptor) => {
    if (!error && fileDescriptor) {
      // Do something with the file here ...
      fs.writeFile(fileDescriptor, newData, (error) => {
        if (!error) {
          fs.close(fileDescriptor, (error) => {
            if (!error) {
              callback(false);
            } else {
              callback('Error closing the file');
            }
          });
        } else {
          callback('Error writing to new file');
        }
      });
    } else {
      callback('Could not create new file, it may already exists');
    }
  });
};

පොරොන්දු සහ async/ awaitප්‍රකාශ භාවිතා කිරීමෙන් ඔබට මෙම ඇමතුම් ආපසු ඇතුළත ඇමතුම් ලබා ගැනීමේ කේත ව්‍යුහයෙන් මිදීමට අවශ්‍ය විය හැකිය . මෙය අසමමුහුර්ත කේත ව්‍යුහය වඩාත් සමතලා කරනු ඇත. එසේ කිරීම සඳහා ඉතා ප්‍රයෝජනවත් උපයෝගීතාවයක් ඇත. (මුල්) ශ්‍රිතය භාවිතා කළ හැකිය. ඇමතුම් වලින් ආපසු පොරොන්දු වෙත මාරු වීමට එය අපට ඉඩ දෙයි. fsපහත කාර්යයන් සමඟ උදාහරණය දෙස බලන්න:

// Dependencies.
const util = require('util');
const fs = require('fs');

// Promisify "error-back" functions.
const fsOpen = util.promisify(fs.open);
const fsWrite = util.promisify(fs.writeFile);
const fsClose = util.promisify(fs.close);

// Now we may create 'async' function with 'await's.
async function doSomethingWithFile(fileName) {
  const fileDescriptor = await fsOpen(fileName, 'wx');

  // Do something with the file here...

  await fsWrite(fileDescriptor, newData);
  await fsClose(fileDescriptor);
}

1
මෙම ස්නිපෙට් සහ කේත කෑලි නොවන්නේ ඇයි? ඔවුන්ට කිසි විටෙක බ්‍රව්සරයක ධාවනය කිරීමට නොහැකි වනු ඇත.
සිමානෝ

@ සිමානෝ මා තේරුම් ගත් පරිදි ප්‍රශ්නය වූයේ නෝඩ්ජස් සම්බන්ධ බැවින් බ්‍රව්සරයක ක්‍රියාත්මක වීමට අවශ්‍ය නොවේ.
මෑන්ෆ්‍රඩ්

1
An මෑන්ෆ්‍රඩ් හරියටම! මම කියන්නට උත්සාහ කළ දෙය ඔබ වරදවා වටහාගෙන ඇතැයි මම සිතමි. ස්නයිපෙට් නෝඩ්ජ් බැවින් එහි කිසිදු තේරුමක් නැත!
සිමානෝ

11
 var fs = require('fs');
 fs.writeFile(path + "\\message.txt", "Hello", function(err){
 if (err) throw err;
  console.log("success");
}); 

උදාහරණයක් ලෙස: ගොනුව කියවා වෙනත් ගොනුවකට ලියන්න:

  var fs = require('fs');
    var path = process.cwd();
    fs.readFile(path+"\\from.txt",function(err,data)
                {
                    if(err)
                        console.log(err)
                    else
                        {
                            fs.writeFile(path+"\\to.text",function(erro){
                                if(erro)
                                    console.log("error : "+erro);
                                else
                                    console.log("success");
                            });
                        }
                });

ඔබ "to.text" වෙත දත්ත ලියන්නේ කොහේද ??
රවී ශංකර් රෙඩ්ඩි

මෙම පිළිතුර දැනටමත් පවතින බහුවිධ පිළිතුරු වලට එකතු කරන්නේ writeFileකුමක්ද?
ඩෑන් ඩස්කල්ස්කු

7

මෙහිදී අපි ක්‍රියා දෙකම කියවීමට / ලිවීමට 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' යන්නයි.


6

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()

1
මෙමඟින් ප්‍රශ්නයට අදාළ නොවන සියලු ආකාරයේ සංකූලතා (මොන්ගෝ ක්ලයන්ට්, JSON ආදිය) හඳුන්වා දෙයි.
ඩෑන් ඩස්කල්ස්කු

5

fs.createWriteStream(path[,options])

optionsstartගොනුවේ ආරම්භයේ සිට යම් ස්ථානයක දත්ත ලිවීමට ඉඩ දීමේ විකල්පයක් ද ඇතුළත් විය හැකිය . ගොනුවක් ප්‍රතිස්ථාපනය කරනවාට වඩා වෙනස් කිරීම පෙරනිමි ප්‍රකාරයට වඩා flagsමාදිලියක් අවශ්‍ය විය හැකිය . කේතනය කිරීම බෆර් විසින් පිළිගත් ඕනෑම එකක් විය හැකිය .r+w

autoCloseසත්‍ය ලෙස සකසා ඇත්නම් (පෙරනිමි හැසිරීම) 'error'හෝ 'finish'ගොනු විස්තරය ස්වයංක්‍රීයව වසා දමනු ඇත. autoCloseඅසත්‍ය නම් , දෝෂයක් තිබුණද, ගොනු විස්තරය වසා නොදමනු ඇත. එය වසා දමා ගොනු විස්තර කිරීමේ කාන්දුවක් නොමැති බවට වග බලා ගැනීම යෙදුමේ වගකීම වේ.

ReadStream මෙන් , fdනියම කර ඇත්නම් , WriteStreampath තර්කය නොසලකා හරිනු ඇති අතර නිශ්චිත ගොනු විස්තරය භාවිතා කරනු ඇත. මෙයින් අදහස් කරන්නේ කිසිදු 'open'සිදුවීමක් විමෝචනය නොවන බවයි. fdඅවහිර කළ යුතුය; අවහිර නොකරන ලද fdඒවා 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');

createWriteStreamමීට වසර කිහිපයකට පෙර පිළිතුරු කිහිපයකින් දැනටමත් සඳහන් කර ඇත .
ඩෑන් ඩස්කල්ස්කු

2

ඔබට පුස්තකාලය භාවිතා කළ හැකිය 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);
});

2
This modules is created to save and remove files.. පිළිතුරක් නොවේ.
හරිත


-1

පහත දැක්වෙන කේත උදාහරණයෙන් ඔබට ගොනුවක ලිවිය හැකිය:

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.');
      }
    });
  }
});

1
writeFileමීට වසර ගණනාවකට පෙර දැනටමත් කිහිප වතාවක්ම පිළිතුරක් ලබා දී තිබුණි. මෙම පිළිතුර එකතු කරන්නේ කුමක් ද?
ඩෑන් ඩස්කල්ස්කු

ඔබ ගොනුව විවෘත කරන්නේ ඇයි? පිළිතුර ලිපිගොනු ලිවීම ගැන විය යුතු නොවේද?
මිචාල්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.