programing

node.js 파일 제거

muds 2023. 5. 16. 23:10
반응형

node.js 파일 제거

node.js가 있는 파일을 삭제하려면 어떻게 해야 합니까?

http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback

제거 명령이 표시되지 않습니까?

당신이 사용하고 싶어하는 것 같습니다.

추가 정보:fs여기서 찾을 수 있습니다.

전화할 수 있습니다.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);

파일의 존재 여부를 삭제하기 전에 파일을 확인하려는 경우.따라서 다음 대신 fs.stators.statSync(Synchronous)를 사용합니다.fs.exists최신 node.js 문서에 따르면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');
   });  
});

파일이 있는지 없는지 확인할 필요는 없다고 생각합니다.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`);
    }
});

2020년 정답

노드의 릴리스와 함께v14.14.0이제 할 수 있습니다.

fs.rmSync("path/to/file", {
    force: true,
});

https://nodejs.org/api/fs.html#fsrmsyncpath-options

여기 이 목적을 위해 만든 작은 조각이 있습니다.

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

2019년과 노드 10+가 왔습니다.sweet async/waitway를 사용한 버전 아래.

이제 포장할 필요가 없습니다.fs.unlink추가 패키지를 사용하거나 사용하지 않는 약속(예:fs-extra) 더 이상.

네이티브 fs Promise API를 사용하면 됩니다.

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.promise는 Node 10.x.x에서 실험으로 표시된 API(그러나 완전히 정상적으로 작동함)를 약속하며 이후로 더 이상 실험적이지 않음을 유의하시기 바랍니다.11.14.0.

다음 작업을 수행할 수 있습니다.

const deleteFile = './docs/deleteme.txt'
if (fs.existsSync(deleteFile)) {
    fs.unlink(deleteFile, (err) => {
        if (err) {
            console.log(err);
        }
        console.log('deleted');
    })
}

비동기식으로 파일 또는 심볼 링크를 제거합니다.완료 콜백에 가능한 예외 이외의 인수가 제공되지 않습니다.

fs.unlink()는 디렉토리에서 작동하지 않습니다. 비어 있거나 그렇지 않습니다.디렉터리를 제거하려면 fs.rmdir()를 사용합니다.

더 자세한 정보

단순 및 동기화

if (fs.existsSync(pathToFile)) {
  fs.unlinkSync(pathToFile)
}

허용된 답변으로 다음을 사용합니다.fs.unlink파일을 삭제합니다.

그러나 Node.js 문서에 따르면

사용.fs.stat()호출하기 전에 파일의 존재를 확인합니다.fs.open(),fs.readFile()또는fs.writeFile()권장되지 않습니다.대신 사용자 코드는 파일을 직접 열고/읽고/쓰며 파일을 사용할 수 없는 경우 발생하는 오류를 처리해야 합니다.

이후 조작하지 않고 파일이 존재하는지 확인하기 위해,fs.access()권장됩니다.

파일 삭제 가능 여부를 확인하려면 사용fs.access대신

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

여기 잘 작동하는 제 코드 아래에 있습니다.

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

2022년 정답

Nodejs에서 동기화 작업을 수행하지 않음

파일을 비동기적으로 삭제하려면,

const { unlink } = require('fs/promises');
(async function(path) {
  try {
    await unlink(path);
    console.log(`successfully deleted ${path}`);
  } catch (error) {
    console.error('there was an error:', error.message);
}
})('/tmp/hello');

참조: https://nodejs.org/api/fs.html#promise-example

액세스 또는 stat를 사용하여 삭제하기 전에 파일이 있는지 확인하는 것이 좋습니다.

import { access, constants } from 'fs';

const file = 'package.json';

// Check if the file exists in the current directory.
access(file, constants.F_OK, (err) => {
  console.log(`${file} ${err ? 'does not exist' : 'exists'}`);
});

참조: https://nodejs.org/api/fs.html#fsaccesspath-mode-callback

  • fs.unlinkSync()을 동기적으로 와 파일을 제거하려는 경우
  • fs.unlink()비동기적으로 제거하려는 경우.

여기서 좋은 기사를 찾을 수 있습니다.

그저.rm -rf그것

require("fs").rmSync(file_or_directory_path_existing_or_not, {recursive: true, force: true});
// Added in Node.js 14.14.0.

와 함께require("fs").rmSync또는require("fs").rm.

del 모듈을 사용하여 현재 디렉터리에서 하나 이상의 파일을 제거할 수 있습니다.좋은 점은 현재 작업 디렉터리 이상을 삭제하지 않도록 보호하는 기능입니다.

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

fs.unlink(경로, 콜백) 기능을 사용할 수 있습니다.다음은 "error-back" 패턴이 있는 함수 래퍼의 예입니다.

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

파일 이름에 대해 regexp와 일치하는 디렉터리에서 파일을 제거합니다.fs.unlink만 사용 - fs.readdir 파일 제거 - 디렉토리에서 모든 파일 가져오기

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]) 
        }
    }
});

fs는 매우 쉽습니다.

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

fs-extra제거 방법을 제공합니다.

const fs = require('fs-extra')

fs.remove('/tmp/myfile')
.then(() => {
  console.log('success!')
})
.catch(err => {
  console.error(err)
})

https://github.com/jprichardson/node-fs-extra/blob/master/docs/remove.md

다음 코드를 사용하여 파일을 제거할 수 있습니다.

unlinkSync:

import { unlinkSync } from 'fs';

다음과 같은 메서드를 만들 수 있습니다.

export const removeFileFromLocation = async (filePath: string) => {
    const removeRes = await unlinkSync(filePath);
    return removeRes;
}

이 방법을 다음과 같이 사용합니다.

const removeRes = await removeFileFromLocation(`${PATH_DOWNLOADED_FILE}/${sourceFileName}`);
console.log("removeFileFromLocation:",removeRes);

여기에 이미지 설명 입력

모든 정보를 제공하고 모든 것이 약속된 NPM 모듈 fs-extra를 사용합니다.보너스로 afs.remove() 메서드를 사용할 수 있습니다.

폴더에서 파일/이미지를 삭제할 수 있는 코드입니다.

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

언급URL : https://stackoverflow.com/questions/5315138/node-js-remove-file

반응형