node 파일 의 일괄 이름 을 바 꾸 는 방법 예제

실제 수요 에서 일부 파일(예 를 들 어 텍스트,그림)의 이름 을 바 꾸 고 숫자 번호 에 따라 이름 을 바 꿔 야 합 니 다.마침 이 를 통 해 node 의 fs 파일 작업 을 익히 고 파일 이름 을 대량으로 수정 하 는 스 크 립 트 를 썼 습 니 다.
수요
현재 아래 그림 파일

파일 이름 을 일괄 적 으로 수정 하고 접두사 이름 을 통일 하 며 색인 을 추가 해 야 합 니 다.수정 후 효과

가장 간단 한 인력 조작 은 파일 마다 이름 을 바 꾸 는 것 이지 만 DRY(Don't repeat yourself)원칙 에 따라 node 스 크 립 트 를 써 서 해결 하 는 것 입 니 다.
연구 하 다.
node 에서 파일 작업 을 하려 면 fs 모듈 을 알 아야 합 니 다.
fs 모듈 에는 동기 화 와 비동기 두 가지 방식 이 있 습 니 다.
파일 읽 기

//  
fs.readFile('test.txt', 'utf-8' (err, data) => {
  if (err) {
    throw err;
  }
  console.log(data);
});

//  
let data = fs.readFileSync('test.txt');
console.log(data);
비동기 읽 기 파일 매개 변수:파일 경로,인 코딩 방식,리 셋 함수
파일 쓰기

fs.writeFile('test2.txt', 'this is text', { 'flag': 'w' }, err => {
  if (err) {
    throw err;
  }
  console.log('saved');
});
파일 인자 쓰기:대상 파일,내용 쓰기,쓰기 형식,리 셋 함수
flag 기록 방식:
r:파일 읽 기
w:파일 쓰기
a:추가
디 렉 터 리 만 들 기

fs.mkdir('dir', (err) => {
  if (err) {
    throw err;
  }
  console.log('make dir success');
});
dir 새 디 렉 터 리 이름
디 렉 터 리 읽 기

fs.readdir('dir',(err, files) => {
  if (err) {
    throw err;
  }
  console.log(files);
}); 
dir 는 디 렉 터 리 이름 을 읽 기 위해 files 는 디 렉 터 리 에 있 는 파일 이나 디 렉 터 리 이름 배열 입 니 다.
파일 정보 가 져 오기

fs.stat('test.txt', (err, stats)=> {
  console.log(stats.isFile());     //true
})
파일 정보 가 져 오기 후 stats 방법:
방법.
설명 하 다.
stats.isFile()
파일 여부
stats.isDirectory()
디렉토리
stats.isBlockDevice()
블록 장치 여부
stats.isCharacterDevice()
문자 장치 여부
stats.isSymbolicLink()
소프트 링크 여부
stats.isFIFO()
UNIX FIFO 명령 파이프 인지 여부
stats.isSocket()
Socket 인지 여부
읽 기 흐름 생 성

let stream = fs.createReadStream('test.txt');
쓰기 흐름 만 들 기

let stream = fs.createWriteStreamr('test_copy.txt');
개발 하 다.
개발 방향:
소스 디 렉 터 리 읽 기
  • 저장 디 렉 터 리 가 존재 하 는 지,존재 하지 않 을 때 새 디 렉 터 리
  • 복사 파일
    복사 내용 이 파일 인지 아 닌 지 를 판단 합 니 다.
    읽 기 흐름 만 들 기쓰기 흐름 만 들 기파 이 프 를 연결 하고 파일 내용 을 기록 합 니 다
    
    let fs = require('fs'),
      src = 'src',
      dist = 'dist',
      args = process.argv.slice(2),
      filename = 'image',
      index = 0;
    
    //show help
    if (args.length === 0 || args[0].match('--help')) {
      console.log('--help
    \t-src
    \t-dist
    \t-n
    \t-i
    '); return false; } args.forEach((item, i) => { if (item.match('-src')) { src = args[i + 1]; } else if (item.match('-dist')) { dist = args[i + 1]; } else if (item.match('-n')) { filename = args[i + 1]; } else if (item.match('-i')) { index = args[i + 1]; } }); fs.readdir(src, (err, files) => { if (err) { console.log(err); } else { fs.exists(dist, exist => { if (exist) { copyFile(files, src, dist, filename, index); } else { fs.mkdir(dist, () => { copyFile(files, src, dist, filename, index); }) } }); } }); function copyFile(files, src, dist, filename, index) { files.forEach(n => { let readStream, writeStream, arr = n.split('.'), oldPath = src + '/' + n, newPath = dist + '/' + filename + index + '.' + arr[arr.length - 1]; fs.stat(oldPath, (err, stats) => { if (err) { console.log(err); } else if (stats.isFile()) { readStream = fs.createReadStream(oldPath); writeStream = fs.createWriteStream(newPath); readStream.pipe(writeStream); } }); index++; }) }
    효과.

    총결산
    node 는 다양한 모듈 을 제공 하여 우리 가 서로 다른 수 요 를 가 진 기능 개발 을 완성 하 는 데 도움 을 줄 수 있 습 니 다.자바 script 은 브 라 우 저 에 국한 되 지 않 고 스스로 스 크 립 트 를 작성 하 는 것 이 이 모듈 에 대한 이해 에 도움 이 되 고 업무 효율 도 향상 시 킬 수 있 습 니 다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기