node.js ফাইল সরান


উত্তর:


803

আমি মনে করি আপনি ব্যবহার করতে চান fs.unlink

আরও তথ্য এখানেfs পাওয়া যাবে


137
আমি বিশ্বাস করি এটি পসিক্স মান থেকে এসেছে। তবে আপনি কি ভাবেন যে তারা একটি deleteউপনাম যুক্ত করতে পারে !
নিক

11
@ নিক বা একটি rmFileউপনাম
পিক্সনবিটস

9
@ পিক্সনবিটস বা একটি উপন্যাসের rmযদি তাদের rmdirপদ্ধতি থাকে
রবিন

8
উল্কা ব্যবহারকারীর জন্য, আপনি ব্যবহার করতে পারেনfs.unlinkSync()
এরদাল জি।

3
আমি মনে করি আপনার একটি সম্পূর্ণ উদাহরণ সরবরাহ করা উচিত, লিঙ্কগুলি পরিবর্তন হতে পারে।
ভ্যাসিলেভিচ

222

আপনি fs.unlink(path, callback)অ্যাসিঙ্ক্রোনাস আনলিঙ্ক (2) বা fs.unlinkSync(path)সিঙ্ক্রোনাস আনলিংক (2) এর জন্য কল করতে পারেন । ফাইল-পাথ
কোথায় pathযা আপনি সরাতে চান।

উদাহরণস্বরূপ আমরা ডিরেক্টরি discovery.docxথেকে ফাইল সরাতে চাই c:/book। সুতরাং আমার ফাইল-পাথ c:/book/discovery.docx। সুতরাং ফাইলটি অপসারণের কোডটি হবে,

var fs = require('fs');
var filePath = 'c:/book/discovery.docx'; 
fs.unlinkSync(filePath);

64

আপনি যদি ফাইলটি মুছে ফেলার আগে পরীক্ষা করতে চান তবে তা বিদ্যমান আছে কি নেই। সুতরাং, পরিবর্তে fs.stat বা fs.statSync ( সিঙ্ক্রোনাস ) ব্যবহার করুন fs.exists। কারণ সর্বশেষ নোড.জেএস ডকুমেন্টেশন অনুসারে , fs.existsএখন হ্রাস করা হয়েছে

উদাহরণ স্বরূপ:-

 fs.stat('./server/upload/my.csv', function (err, stats) {
   console.log(stats);//here we got all information of file in stats variable

   if (err) {
       return console.error(err);
   }

   fs.unlink('./server/upload/my.csv',function(err){
        if(err) return console.log(err);
        console.log('file deleted successfully');
   });  
});

আমি যদি এটি পরীক্ষা করি তবে এটি বিদ্যমান, তবে এটি অন্য প্রক্রিয়া দ্বারা অবরুদ্ধ রয়েছে - বা, আমি এটি উপস্থিত রয়েছে তা যাচাই করে দেখি, এবং ঠিক আছে, তবে আমি মুছতে সক্ষম হওয়ার আগে অন্য কোনও প্রক্রিয়া এলোমেলোভাবে এটিকে অবরুদ্ধ করে। আমি কীভাবে সরাসরি যাচাই করে ব্লক করতে পারি? তাহলে আমি এর ব্লকড হিসাবে মুছে ফেলতে পারব না

4
নোট করুন যে fs.exists () অবমূল্যায়িত হয়েছে, কিন্তু fs.existsSync () নয়।
টিম

1
এটিকে অবমূল্যায়নের একটি কারণ রয়েছে: আপনি ফাইল মুছে ফেলার আগে যদি পরীক্ষা করেন যে প্রায়শই আপনি একটি রেসের শর্ত তৈরি করেন। পরিবর্তে, আপনাকে কেবল কল করা উচিত fs.unlink, এবং ফাইলটি উপস্থিত না থাকলে ENOENTকলব্যাকে আপনার একটি ত্রুটি ঘটবে। লিঙ্কমুক্ত করার চেষ্টা করার আগে পরীক্ষা করার দরকার নেই।
ZachB

@ জাচবি fs.unlinkফাইলের অস্তিত্ব না থাকায় মুছুন অপারেশন কেন সম্পাদন করে, তাই আমার ভিউ অপসারণের আগে চেক ফাইলটি।
দ্রাক্ষালতা

একাধিক থ্রেড বা প্রক্রিয়া রয়েছে যা একই ফাইলটি ব্যবহার করতে বা মুছে ফেলার চেষ্টা করছে তা যদি আপনার উপস্থিত থাকে কিনা তা যাচাই করা উচিত নয়, এক্ষেত্রে আপনার চেকটি ফাইলটি উপস্থিত থাকার সময় এবং সময়ের মধ্যে অকার্যকর হয়ে যাবে আপনি এটি মুছতে চেষ্টা করুন। unlinkকলব্যাকে কেবল ENOENT ত্রুটি কোডটি পরীক্ষা করুন । যদি ত্রুটিটি ঘটে থাকে তবে ফাইলটি উপস্থিত ছিল না। উদাহরণস্বরূপ সিরেনের উত্তর দেখুন।
ZachB

34

আমি মনে করি না যে আপনার ফাইলটি আছে কিনা fs.unlinkতা যাচাই করতে হবে , এটি আপনার জন্য যাচাই করে নেবে ।

fs.unlink('fileToBeRemoved', function(err) {
    if(err && err.code == 'ENOENT') {
        // file doens't exist
        console.info("File doesn't exist, won't remove it.");
    } else if (err) {
        // other errors, e.g. maybe we don't have enough permission
        console.error("Error occurred while trying to remove file");
    } else {
        console.info(`removed`);
    }
});

কীভাবে আমি আমাদের নিয়ামকটিতে পূর্ববর্তী চিত্রের নাম পেতে পারি?
চৌধুরী

26

এই উদ্দেশ্যে আমি তৈরি একটি ছোট স্নিপেট এখানে,

var fs = require('fs');
var gutil = require('gulp-util');

fs.exists('./www/index.html', function(exists) {
  if(exists) {
    //Show in green
    console.log(gutil.colors.green('File exists. Deleting now ...'));
    fs.unlink('./www/index.html');
  } else {
    //Show in red
    console.log(gutil.colors.red('File not found, so not deleting.'));
  }
});


2
আপনি যদি চেক করার পরে এবং ফাইলটি মুছে fs.existsফেলার আগে অন্যরা ফাইল মুছে ফেলে তবে কী হবে fs.unlink? এটা হতে পারে.
সমুদ্র

4
ফাইলটি লিঙ্কমুক্ত করার চেষ্টা করার আগে আপনার কোনও ফাইল উপস্থিত রয়েছে কিনা তা পরীক্ষা করা উচিত নয়। কেবল কল করুন unlink, এবং এটি উপস্থিত না থাকলে ENOENTত্রুটিটি পরিচালনা করুন handle অন্যথায় আপনি একটি রেসের শর্ত তৈরি করতে পারেন।
ZachB

9

গৃহীত উত্তর হিসাবে, fs.unlinkফাইলগুলি মুছতে ব্যবহার করুন।

তবে নোড.জেএস ডকুমেন্টেশন অনুসারে

ব্যবহার fs.stat()কল করার আগে ফাইল অস্তিত্ব জন্য চেক করতে fs.open(), fs.readFile()বা fs.writeFile()বাঞ্ছনীয় নয়। পরিবর্তে, ব্যবহারকারী কোডটি সরাসরি ফাইলটি খুলতে / পড়তে / লিখতে হবে এবং ফাইলটি উপলভ্য না হলে উত্থিত ত্রুটিটি পরিচালনা করতে হবে।

কোনও ফাইল এটি পরে চালিত না করে উপস্থিত কিনা তা পরীক্ষা করার fs.access()জন্য সুপারিশ করা হয়।

ফাইলগুলি মুছে ফেলা যায় বা না, fs.accessতার পরিবর্তে ব্যবহার করুন check

fs.access('/etc/passwd', fs.constants.R_OK | fs.constants.W_OK, (err) => {
  console.log(err ? 'no access!' : 'can read/write');
});

এটি একটি নোড.জেএস রেফারেন্স সহ একটি ভাল উত্তর। বেশিরভাগ লোক unlinkসরাসরি ব্যবহার করবে কারণ তারা জানে যে ফাইলটি মুছে ফেলার অধিকার রয়েছে। তবে fs.accessমুছে ফেলার আগে যদি তাদের পরীক্ষা করতে হয় তবে এটি একটি ভাল বিকল্প। তবে আমি মনে করি যদি তাদের কোনও ফাইল এটির পরে চালিত না করে উপস্থিত থাকে কিনা তা খতিয়ে দেখার দরকার আছে, তাদের স্বাভাবিকভাবে ব্যবহার করা উচিত fs.stat, fs.accessআমার বিনীত মতের ভিন্ন উদ্দেশ্য রয়েছে।
vdegenne

ডকুমেন্টেশন কেন অস্তিত্বের জন্য যাচাইয়ের বিরুদ্ধে পরামর্শ দেয় কারণ হ'ল তথ্যটি আপনার কলকে fs.stat / fs.access এবং প্রকৃত ক্রিয়াকলাপের মধ্যে পরিবর্তন করতে পারে। উদাহরণস্বরূপ, যখন আপনি fs.access কল করবেন তখন ফাইলটি উপস্থিত থাকতে পারে এবং আপনি fs.unlink কল করার আগে মুছে ফেলা হবে বা দুটি কলের মধ্যে অনুমতিগুলি পরিবর্তন হতে পারে। যেহেতু আপনাকে সেই ক্ষেত্রে fs.unlink এর ত্রুটি কোডগুলি হ্যান্ডেল করতে হবে তবে fs.stat বা fs.access কল করার কোনও মানে নেই।
জ্যানিস ফ্রয়েস

6

এখানে আমার কোড নীচে যা সূক্ষ্ম কাজ করে।

         const fs = require('fs');
         fs.unlink(__dirname+ '/test.txt', function (err) {            
              if (err) {                                                 
                  console.error(err);                                    
              }                                                          
             console.log('File has been Deleted');                           
          });                                                            

আমার এই উত্তরটি সবচেয়ে ভাল লেগেছে কারণ এটি লিঙ্ক সম্পূর্ণ হওয়ার পরে কীভাবে কিছু চালায় এবং ত্রুটি বার্তাকে কাস্টমাইজ করার বিষয়ে চিন্তা করে না তাদের জন্য এটি সহজতম সম্পূর্ণ এবং সঠিক উত্তর।
কলিন কেইনান

আপনি __ ডিরেক্টরি ব্যবহার করছেন কেন? আমি ভাবছি যদি আমরা পুরো পথের পরিবর্তে কোনও আপেক্ষিক পথ রাখতে পারি?
বুম্পাস্টার

6

2019 এবং নোড 10+ এখানে । সংস্করণের নীচে মিষ্টি async / অপেক্ষার উপায় ব্যবহার করে ।

এখন fs.unlinkপ্রতিশ্রুতিগুলিতে মোড়ানোর দরকার নেই বা অতিরিক্ত প্যাকেজগুলি (যেমন fs-extra) ব্যবহার করার দরকার নেই।

কেবল নেটিভ fs প্রতিশ্রুতি এপিআই ব্যবহার করুন ।

const fs = require('fs').promises;

(async () => {
  try {
    await fs.unlink('~/any/file');
  } catch (e) {
    // file doesn't exist, no permissions, etc..
    // full list of possible errors is here 
    // http://man7.org/linux/man-pages/man2/unlink.2.html#ERRORS
    console.log(e);
  }
})();

fsPromises.unlinkনোড ডক্স থেকে এখানে অনুমান।

এছাড়াও দয়া করে নোট করুন যে fs.promises এপিআই নোড ১০.০xx এ পরীক্ষামূলক হিসাবে চিহ্নিত হয়েছে (তবে পুরোপুরি সূক্ষ্মভাবে কাজ করে) এবং এর পরে আর পরীক্ষামূলক হয় না 11.14.0


3

আপনি বর্তমান ডিরেক্টরিতে এক বা একাধিক ফাইল অপসারণ করতে ডেল মডিউল ব্যবহার করতে পারেন । এটির মধ্যে কী দুর্দান্ত তা হ'ল এটি আপনাকে বর্তমানের চলমান ডিরেক্টরি এবং উপরের ডিরেক্টরি মুছে ফেলার বিরুদ্ধে সুরক্ষা দেয়।

const del = require('del');
del(['<your pathere here>/*']).then( (paths: any) => {
   console.log('Deleted files and folders:\n', paths.join('\n'));
});

যদি আপনার একাধিক ফাইল মুছতে হয় তবে এটি দুর্দান্ত বিকল্প! আপনার পরামর্শের জন্য ধন্যবাদ।
স্যামুয়েল আর্ল

2

আপনি fs.unlink (পাথ, কলব্যাক) ফাংশন ব্যবহার করতে পারেন । এখানে "ত্রুটি-ব্যাক" প্যাটার্ন সহ ফাংশন র‍্যাপারের একটি উদাহরণ রয়েছে:

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

// Delete a file.
const deleteFile = (filePath, callback) => {
  // Unlink the file.
  fs.unlink(filePath, (error) => {
    if (!error) {
      callback(false);
    } else {
      callback('Error deleting the file');
    }
  })
};


2

ডিরেক্টরি নামের ফাইল থেকে সরান যা ফাইলের নামের জন্য রেজিপ্স্পের সাথে মেলে। ডিরেক্টরি থেকে সমস্ত ফাইল পেতে, fs.readdir - ফাইল সরাতে শুধুমাত্র fs.unlink ব্যবহার করা হয়

var fs = require('fs');
const path = '/path_to_files/filename.anyextension'; 

const removeFile = (fileName) => {
    fs.unlink(`${path}${fileName}`, function(error) {
        if (error) {
            throw error;
        }
        console.log('Deleted filename', fileName);
    })
}

const reg = /^[a-zA-Z]+_[0-9]+(\s[2-4])+\./

fs.readdir(path, function(err, items) {
    for (var i=0; i<items.length; i++) {
        console.log(items[i], ' ', reg.test(items[i]))
        if (reg.test(items[i])) {
           console.log(items[i])
           removeFile(items[i]) 
        }
    }
});

2

এটি fs দিয়ে খুব সহজ।

var fs = require('fs');
try{
 var sourceUrls = "/sampleFolder/sampleFile.txt";
 fs.unlinkSync(sourceUrls);
}catch(err){
 console.log(err);
}



-1

এখানে কোড যেখানে আপনি ফোল্ডার থেকে ফাইল / চিত্র মুছতে পারেন।

var fs = require('fs'); 
Gallery.findById({ _id: req.params.id},function(err,data){ 
    if (err) throw err;
    fs.unlink('public/gallery/'+data.image_name);
 });

নোড 7 সাল থেকে কলব্যাক আর্গুমেন্ট আর longerচ্ছিক নয় এবং এর ফলে একটি সতর্কতা আসবে। আপনি যদি সত্যিই এটির যত্ন না নেন তবে একটি খালি ফাংশনটি পাস করুন।
jlh
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.