>웹 프론트엔드 >JS 튜토리얼 >노드 파일 일괄 이름 바꾸기

노드 파일 일괄 이름 바꾸기

php中世界最好的语言
php中世界最好的语言원래의
2018-03-13 17:14:071619검색

이번에는 노드 파일 일괄 이름 바꾸기에 대해 알려드리겠습니다. 노드 파일 일괄 이름 바꾸기의 주의사항은 무엇인가요? 실제 사례를 살펴보겠습니다.

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

요구 사항

다음 그림 파일을 사용할 수 있습니다

노드 파일 일괄 이름 바꾸기


수정 전

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


수정 후

노드 파일 일괄 이름 바꾸기

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

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

비동기식 파일 읽기 매개변수: 파일 경로, 인코딩 메서드, 콜백 함수

파일 쓰기

fs.writeFile('test2.txt', 'this is text', { 'flag': 'w' }, err => {    if (err) {        throw err;
    }    console.log('saved');
});

쓰기 파일 매개변수: 대상 파일, 내용 쓰기, 양식 쓰기, 콜백 함수
플래그 쓰기 방법:

r: 파일 읽기

w: 파일 쓰기

a: 추가

디렉토리 만들기

fs.mkdir('dir', (err) => {    if (err) {        throw err;
    }    console.log('make dir success');
});

dir은 새 디렉토리의 이름입니다

Read the 디렉토리

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.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 helpif (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++;
    })
}

이 글의 사례를 읽어보셨을 거라 믿습니다. 방법을 익히신 후, 더 흥미로운 내용을 보시려면 PHP 중국어 웹사이트의 다른 관련 글도 주목해주세요!

추천 도서:

JS 코드를 사용하여 사격 효과 만들기

H5 캔버스를 사용하여 사격 효과 만들기

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.