উত্তর:
ফাইল সিস্টেম এপিআইতে প্রচুর বিবরণ রয়েছে । সর্বাধিক সাধারণ উপায়:
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!');
/home/...
। সাধারণত সেই ডিরেক্টরিটি 755 মূল: চাকা (বা যাই হোক না কেন)। নোড যদি জেন হিসাবে কোনও ফাইল লিখতে চায় তবে এটি লিখতে আরও সহজ হবে /home/jane/test.txt
। /home
755 এর চেয়ে বেশি অনুমোদিত কিছুতে পরিবর্তন করা একটি বিশাল ভুল।
/home
ডিরেক্টরিটি ফাইলটি সংরক্ষণ করতে চেয়েছিলেন আমি chmod করার পরামর্শ দিয়েছিলাম। আমি জানি এটি কোনও সুরক্ষা সমস্যা তৈরি করতে পারে। তবে ভাল, যদি ব্যবহারকারী সেখানে সংরক্ষণ করতে চান, তবে এটিই সমাধান। পিএস: আপনি যা বলেছেন তার সাথে আমি একমত (:
বর্তমানে ফাইল লেখার জন্য তিনটি উপায় রয়েছে:
fs.write(fd, buffer, offset, length, position, callback
)
বাফারটি ডিস্কে লিখিত আছে তা নিশ্চিত করতে আপনাকে কলব্যাকের জন্য অপেক্ষা করতে হবে। এটি বাফার হয় না।
fs.writeFile(filename, data, [encoding], callback)
সমস্ত ডেটা একই সাথে সঞ্চয় করতে হবে; আপনি অনুক্রমিক লেখার সম্পাদন করতে পারবেন না।
fs.createWriteStream(path, [options]
)
একটি তৈরি করে WriteStream
, যা সুবিধাজনক কারণ আপনার কলব্যাকের জন্য অপেক্ষা করার দরকার নেই। তবে আবার এটি বাফার হয়নি।
এ 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"))
এটা তিন ইনপুট / আউটপুট স্তরে কল। যদিও আপনি "বাফার" ব্যবহার করছেন, ডেটা বাফার হয় না। একটি বাফার করা স্ট্রিমটি করবে:, fs.write(new Buffer ("abc"))
I / O স্তরটিতে একটি কল।
এখন পর্যন্ত, নোড.জেএস ভি0.12-এ (02/06/2015 স্থিতিশীল সংস্করণ ঘোষিত) এখন দুটি ফাংশন সমর্থন করে:
cork()
এবং
uncork()
। মনে হচ্ছে এই ফাংশনগুলি আপনাকে শেষ পর্যন্ত লিখিত কলগুলি বাফার / ফ্লাশ করার অনুমতি দেবে।
উদাহরণস্বরূপ, জাভাতে কিছু ক্লাস রয়েছে যা বাফার স্ট্রিম সরবরাহ করে ( BufferedOutputStream
, BufferedWriter
...)। আপনি যদি তিনটি বাইট লিখে থাকেন তবে এই বাইটগুলি কেবল তিনটি বাইটের জন্য আই / ও কল করার পরিবর্তে বাফারে (মেমরি) সংরক্ষণ করা হবে। বাফার পূর্ণ হয়ে গেলে সামগ্রীটি ফ্লাশ করে ডিস্কে সংরক্ষণ করা হয়। এটি কর্মক্ষমতা উন্নত করে।
আমি কিছু আবিষ্কার করছি না, কেবল ডিস্ক অ্যাক্সেস কীভাবে করা উচিত তা মনে করে।
cork()
এবং uncork()
আমাদের যারা প্রি-রিলিজ 0.11 নোড চেষ্টা করতে চান তার একটি উদাহরণ সরবরাহ করতে পারেন ?
npm
বাফার রাইটিং বাস্তবায়নের জন্য কি উত্পাদন মানের লাইব্রেরি রয়েছে ?
আপনি অবশ্যই এটি কিছুটা আরও উন্নত করতে পারেন। অবরুদ্ধকরণ, বিট এবং টুকরো লেখা, পুরো ফাইলটি একবারে না লিখে:
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();
});
সিঙ্ক্রোনাস লিখন
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) ডক্স পড়ার পক্ষে মূল্যবান ।
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');
})
});
});
fs.write()
) সেট করা থাকে তবে এই উদাহরণটি কেবলমাত্র তখনই কাজ করে যদি সবকিছু একক রাইটিং কলে লেখার জন্য যথেষ্ট কম থাকে।
আমি ./articles/file- সিস্টেমের সূচকটি পছন্দ করি ।
এটা আমার জন্য কাজ করেছে।
আরও দেখুন কীভাবে আমি নোড.জেজে ফাইল লিখব? ।
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');
});
হেলিওরল্ড.টেক্সট এর বিষয়বস্তু:
Hello World!
আপডেট:
লিনাক্স নোড যেমন বর্তমান ডিরেক্টরিতে লেখেন তেমন অন্য কারও কাছে মনে হয় না, তাই আমি এই মন্তব্যটি কেবলমাত্র ক্ষেত্রে যুক্ত করব: ফাইলটি যেখানে লেখা আছে তা পেতে এটি
ব্যবহার করে ROOT_APP_PATH = fs.realpathSync('.'); console.log(ROOT_APP_PATH);
।
প্রদত্ত উত্তরগুলি তারিখযুক্ত এবং এটি করার একটি নতুন উপায় হ'ল:
const fsPromises = require('fs').promises
await fsPromises.writeFile('/path/to/file.txt', 'data to write')
(node:23759) ExperimentalWarning: The fs.promises API is experimental
v10.15.0
আমি জানি "লিখন" সম্পর্কে জিজ্ঞাসিত প্রশ্নটি কিন্তু আরও সাধারণ অর্থে "অ্যাপেন্ড" কিছু ক্ষেত্রে কার্যকর হতে পারে কারণ কোনও ফাইলে পাঠ্য যুক্ত করার জন্য একটি লুপে ব্যবহার করা সহজ (ফাইলটি উপস্থিত রয়েছে কি না)। আপনি যদি লাইন যুক্ত করতে চান তবে একটি "\ n" ব্যবহার করুন:
var fs = require('fs');
for (var i=0; i<10; i++){
fs.appendFileSync("junk.csv", "Line:"+i+"\n");
}
const
পরিবর্তে ব্যবহার করে পুনঃসংশোধন করব var
, অর্থাত্ const fs = require('fs');
, অযাচিত পার্শ্ব প্রতিক্রিয়া এড়াতে, বিশেষত যদি আপনি কিছুটা বড় কোড বেস নিয়ে কাজ করছেন।
ঠিক আছে, নোড এর জন্য বিল্ট-ইন কার্যকারিতা রয়েছে বলে এটি বেশ সহজ, একে বলা হয় fs
যা ফাইল সিস্টেম এবং মূলত নোডজেএস ফাইল সিস্টেম মডিউল ...
সুতরাং প্রথমে এটি আপনার সার্ভার.জেএস ফাইলের মধ্যে এটির প্রয়োজন :
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!');
});
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");
});
}
});
writeFile
?
আপনি 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
বিবৃতি ব্যবহার করে এই কলব্যাক-ইন-কলব্যাক কোড কাঠামো থেকে মুক্তি পেতে চাইতে পারেন want এটি অ্যাসিক্রোনাস কোড কাঠামোকে আরও বেশি সমতল করবে। এটি করার জন্য একটি সুবিধাজনক ব্যবহার রয়েছে pr প্রমিসিফাই (মূল) ফাংশনটি ব্যবহার করা যেতে পারে। এটি আমাদের কলব্যাক থেকে প্রতিশ্রুতিতে স্যুইচ করার অনুমতি দেয়। 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);
}
উভয় ক্রিয়া পড়তে / লেখার জন্য এখানে আমরা ডাব্লু + ব্যবহার করি এবং যদি ফাইলের সন্ধান না পাওয়া যায় তবে এটি স্বয়ংক্রিয়ভাবে তৈরি হয়ে যায়।
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');
})
});
}
});
সামগ্রীর অর্থ ফাইল এবং এর দৈর্ঘ্যে আপনাকে কী লিখতে হবে, 'সামগ্রী. দৈর্ঘ্য' means
স্থানীয় থেকে ফাইল সিএসভি কীভাবে পড়তে হবে এবং স্থানীয়ভাবে সিএসভি ফাইল লিখতে হবে তার নমুনা এখানে।
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()
fs.createWriteStream(path[,options])
options
start
ফাইলের শুরুর আগে কিছু অবস্থানে ডেটা লেখার অনুমতি দেওয়ার একটি বিকল্প অন্তর্ভুক্ত থাকতে পারে । কোনও ফাইলের পরিবর্তে পরিবর্তনের পরিবর্তে ডিফল্ট মোডের পরিবর্তেflags
মোডের প্রয়োজন হতে পারে । বাফার দ্বারা গৃহীত যেকোনো একটিতে এনকোডিং হতে পারে ।r+
w
যদি
autoClose
সত্য (ডিফল্ট আচরণ) সেট করা থাকে'error'
বা'finish'
ফাইল বর্ণনাকারী স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে। যদিautoClose
এটি মিথ্যা হয় তবে ত্রুটি থাকলেও ফাইল বর্ণনাকারী বন্ধ হবে না। এটি বন্ধ করে দেওয়া এবং কোনও ফাইল বর্ণনাকারী ফাঁস হওয়ার বিষয়টি নিশ্চিত করার জন্য অ্যাপ্লিকেশনটির দায়িত্ব।রিড স্ট্রিমের মতো , যদি
fd
নির্দিষ্ট করা থাকে তবে রাইটস্ট্রিমpath
যুক্তি উপেক্ষা করবে এবং নির্দিষ্ট ফাইল বর্ণনাকারী ব্যবহার করবে। এর অর্থ কোনও'open'
ইভেন্ট নির্গত হবে না।fd
ব্লক করা উচিত; নন-ব্লকিংয়ে নেট.সকেটেfd
পাস করা উচিত ।যদি
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');
আপনি গ্রন্থাগার ব্যবহার করতে পারেন easy-file-manager
এনপিএম থেকে প্রথম ইনস্টল করুন
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);
});
This modules is created to save and remove files.
। কোনও উত্তর নয়।
আপনি নিম্নলিখিত কোড উদাহরণ দিয়ে একটি ফাইলে লিখতে পারেন:
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.');
}
});
}
});
writeFile
ইতিমধ্যে বহু বছর আগে একাধিকবার উত্তর হিসাবে দেওয়া হয়েছিল। এই উত্তরটি কী যুক্ত করে?
{ [Error: EACCES, open '/home/test.txt'] errno: 3, code: 'EACCES', path: '/home/test.txt' }
আমি কীভাবে এই স্ক্রিপ্টটি সংশোধন করতে পারি যাতে এটির বাইরে কাজ করে/tmp
?