如何从Nodejs中的绝对路径获取文件名?
如。“/var/www/foo.txt”中的foo.txt
我知道它适用于字符串操作,如fullpath.replace(/。+\//, ''), 但我想知道是否有显式的方法,如Java中的file.getName() ?
如何从Nodejs中的绝对路径获取文件名?
如。“/var/www/foo.txt”中的foo.txt
我知道它适用于字符串操作,如fullpath.replace(/。+\//, ''), 但我想知道是否有显式的方法,如Java中的file.getName() ?
当前回答
在NodeJS中,__filename.split(/\|//).pop()只返回任何OS平台上绝对文件路径中的文件名。 为什么要关心记住/导入API,而这种正则表达式方法也让我们回忆起我们的正则表达式技能。
其他回答
在NodeJS中,__filename.split(/\|//).pop()只返回任何OS平台上绝对文件路径中的文件名。 为什么要关心记住/导入API,而这种正则表达式方法也让我们回忆起我们的正则表达式技能。
使用path模块的basename方法:
path.basename('/foo/bar/baz/asdf/quux.html')
// returns
'quux.html'
下面是上面例子的文档。
对于那些有兴趣从文件名中删除扩展名的人,可以使用 https://nodejs.org/api/path.html#path_path_basename_path_ext
path.basename('/foo/bar/baz/asdf/quux.html', '.html');
path是一个nodeJS模块,这意味着你不需要安装任何包来使用它的属性。
import path from 'path'
const dir_name = path.basename('/Users/Project_naptha/demo_path.js')
console.log(dir_name)
// returns
demo_path.js
所以Nodejs提供了一个默认的全局变量'__fileName',它保存了当前正在执行的文件 我的建议是将__fileName从任何文件传递给服务,这样fileName的检索是动态的
下面,我使用fileName字符串,然后根据path.sep对其进行拆分。注意路径。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();