> 웹 프론트엔드 > JS 튜토리얼 > 노드 파일 일괄 이름 바꾸기 예제에 대한 자세한 설명

노드 파일 일괄 이름 바꾸기 예제에 대한 자세한 설명

小云云
풀어 주다: 2018-01-20 17:45:44
원래의
1911명이 탐색했습니다.

이 글은 주로 노드 파일의 일괄 이름 변경에 대한 예시를 소개합니다. 편집자는 꽤 좋다고 생각해서 지금 공유하고 참고용으로 제공하겠습니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.

실제 요구 사항에서는 파일 배치(예: 텍스트, 그림)의 이름을 바꾸고 숫자에 따라 번호를 매겨야 합니다. 저는 이번 기회에 노드의 fs 파일 작업에 익숙해지고 파일 이름을 일괄 수정하는 스크립트를 작성했습니다.

요구 사항

현재 존재하는 이미지 파일은 다음과 같습니다

파일 이름을 일괄 수정하여 통합 접두사 이름으로 변경하고 자동으로 색인을 늘려야 합니다. 수정 후 효과

가장 간단한 수동 작업은 파일 이름을 하나씩 바꾸는 것이지만 DRY(반복하지 마세요) 원칙에 따라 노드 스크립트를 작성하는 것이 좋습니다.

Research

노드에서 파일 작업을 수행하려면 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);
로그인 후 복사

Asynchronous 파일 읽기 매개변수: 파일 경로, 인코딩 방법, 콜백 함수

파일 쓰기


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는 새 디렉토리의 이름입니다. , files는 디렉토리 아래의 파일 또는 디렉토리 이름 배열입니다.


fs.readdir('dir',(err, files) => {
  if (err) {
    throw err;
  }
  console.log(files);
});
로그인 후 복사

파일 정보 가져오기

fs.stat('test.txt', (err, stats)=> {
  console.log(stats.isFile());     //true
})
로그인 후 복사

stats 메소드:

메소드 설명통계. isFile()파일인지stats.isDirectory()디렉토리인지stats.isBlockDevice()블록 장치인지stats.isCharacterDevice ()캐릭터 디바이스인지stats.isSymbolicLink()소프트 링크인지stats.isFIFO()UNIX FIFO 명령 파이프라인인지stats. isSocket()소켓인지 여부 읽기 스트림 만들기

let stream = fs.createReadStream('test.txt');
로그인 후 복사

쓰기 스트림 만들기

let stream = fs.createWriteStreamr('test_copy.txt');
로그인 후 복사


개발

개발 아이디어:

원본 디렉터리 읽기
  1. 저장 디렉터리가 있는지 확인, 없으면 새 디렉터리 만들기
  2. 파일 복사
  3. 복사한 내용이 파일인지 판단
  4. 읽기 스트림 만들기
  5. 쓰기 스트림 만들기
  6. 파일 내용을 쓰기 위한 링크 파이프
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\n \t-src 文件源\n \t-dist 文件目标\n \t-n 文件名\n \t-i 文件名索引\n');
  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++;
  })
}
로그인 후 복사

Effect

Summary

Node는 많은 모듈을 제공합니다. 우리가 완료하는 데 도움이 JavaScript가 브라우저에만 국한되지 않도록 다양한 요구 사항에 맞는 기능 개발을 수행하면 이러한 모듈에 대한 이해가 향상되고 사무실 효율성이 향상됩니다.

관련 권장사항:

노드를 사용하여 파일 일괄 이름 바꾸기 기능을 구현하는 방법

PHP를 사용하여 폴더의 모든 파일 이름을 일괄 바꾸는 구현 방법 소개

php 일괄 이름 바꾸기

위 내용은 노드 파일 일괄 이름 바꾸기 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿