답변:
파일 이름의 파일 이름 부분을 가져 오기 위해 basename 메소드가 사용됩니다.
var path = require("path");
var fileName = "C:\\Python27\\ArcGIS10.2\\python.exe";
var file = path.basename(fileName);
console.log(file); // 'python.exe'
확장명이없는 파일 이름을 원하는 경우 확장명 (확장명 포함)을 basename 메소드에 전달하여 확장명이없는 이름 만 Node에 반환하도록 Node에 지시합니다.
var path = require("path");
var fileName = "C:\\Python27\\ArcGIS10.2\\python.exe";
var extension = path.extname(fileName);
var file = path.basename(fileName,extension);
console.log(file); // 'python'
파일 이름에서 확장자를 제거하려는 경우 https://nodejs.org/api/path.html#path_path_basename_path_ext 를 사용할 수 있습니다.
path.basename('/foo/bar/baz/asdf/quux.html', '.html');
/
질문의 예에서 암시 된 것처럼 경로 구분 기호가 특정 플랫폼 / 환경을 작성하고 있음을 이미 알고 있다면 간단하게 유지하고 구분 기호로 문자열을 나눌 수 있습니다.
'/foo/bar/baz/asdf/quux.html'.split('/').pop()
즉 것 빨리 (및 IMO 청소기) 정규 표현식으로 교체하는 것보다 있습니다.
다시 : 특정 환경에서 작성하는 경우에만이 작업을 수행하십시오. 그렇지 않으면 path
경로가 놀라 울 정도로 복잡 하므로 모듈을 사용하십시오 . 예를 들어, Windows /
는 많은 경우 공유 네트워크 폴더 등에 사용되는 스타일 접두사 를 지원 하지만 지원 하지는 않습니다\\?\?
. Windows에서 위의 방법은 조만간 실패 할 것으로 예상됩니다.
NodeJS에서 __filename.split (/ \ | //). pop ()은 모든 OS 플랫폼의 절대 파일 경로에서 파일 이름 만 반환합니다. 이 정규식 접근 방식으로도 정규식 기술을 되 찾을 수 있도록하는 동안 API 기억 / 가져 오기에주의해야하는 이유는 무엇입니까?
따라서 Nodejs는 기본 전역 변수라는 '__fileName'
현재 실행중인 파일을 보유 가 있습니다. 제 충고는 __fileName을 모든 파일의 서비스로 전달하여 fileName 검색을 동적으로 만드는 것입니다
아래에서는 fileName 문자열을 사용하여 path.sep
. 참고 path.sep는 posix 파일 구분 기호 및 Windows 파일 구분 기호 ( '/'및 '\'문제)를 방지합니다. 훨씬 더 깨끗합니다. 부분 문자열을 가져 와서 마지막으로 구분 된 이름 만 가져 와서 길이를 3 배로 빼면 스스로를 말합니다.
이와 같은 서비스를 작성할 수 있습니다 (이것은 typescript이지만 js로 작성할 수는 있습니다)
export class AppLoggingConstants {
constructor(){
}
// Here make sure the fileName param is actually '__fileName'
getDefaultMedata(fileName: string, methodName: string) {
const appName = APP_NAME;
const actualFileName = fileName.substring(fileName.lastIndexOf(path.sep)+1, fileName.length - 3);
//const actualFileName = fileName;
return appName+ ' -- '+actualFileName;
}
}
export const AppLoggingConstantsInstance = new AppLoggingConstants();
path.basename(fpath, path.extname(fpath))