이 글은 주로 노드 파일의 일괄 이름 변경에 대한 예시를 소개합니다. 편집자는 꽤 좋다고 생각해서 지금 공유하고 참고용으로 제공하겠습니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.
실제 요구 사항에서는 파일 배치(예: 텍스트, 그림)의 이름을 바꾸고 숫자에 따라 번호를 매겨야 합니다. 저는 이번 기회에 노드의 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'); });
fs.readdir('dir',(err, files) => { if (err) { throw err; } console.log(files); });
파일 정보 가져오기
fs.stat('test.txt', (err, stats)=> { console.log(stats.isFile()); //true })
stats 메소드:
stats.isDirectory() | |
stats.isBlockDevice() | |
stats.isCharacterDevice () | |
stats.isSymbolicLink() | |
stats.isFIFO() | |
stats. isSocket() | |
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\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 중국어 웹사이트의 기타 관련 기사를 참조하세요!