我正在尝试获取文件的目录位置,而且我不确定如何获取它。我似乎无法找到允许我这样做的模块。
例如说我有这个字符串:
/this/is/a/path/to/a/file.html
我怎么能得到这个:
/this/is/a/path/to/a
我知道我可以使用这样的东西:
path.substr(0, path.lastIndexOf("/") - 1);
但我不确定这是否与可能内置于节点的方法一样好。
我也尝试过:
var info = url.parse(full_path);
console.log(info);
并且结果不会返回我要查找的内容,它会获得包含文件名的完整路径。
那么,节点中是否有可以做到这一点并做得好的东西?
答案 0 :(得分:14)
使用普通JS,这将起作用:
var e = '/this/is/a/path/to/a/file.html'
e.split("/").slice(0,-1).join("/") //split to array & remove last element
//result: '/this/is/a/path/to/a'
OR ... 如果你更喜欢一个班轮(使用正则表达式):
"/this/is/a/path/to/a/file.html".replace(/(.*?)[^/]*\..*$/,'$1')
//result: '/this/is/a/path/to/a/'
或者...... 最后,好老式(并且更快):
var e = '/this/is/a/path/to/a/file.html'
e.substr(0, e.lastIndexOf("/"))
//result: '/this/is/a/path/to/a'
答案 1 :(得分:12)
答案 2 :(得分:2)
我认为您正在寻找path.dirname
答案 3 :(得分:1)
您是否尝试过dirname
模块的path
功能:https://nodejs.org/api/path.html#path_path_dirname_p
path.dirname('/this/is/a/path/to/a/file.html')
// returns
'/this/is/a/path/to/a'
答案 4 :(得分:1)
filepath.split("/").slice(0,-1).join("/"); // get dir of filepath
答案 5 :(得分:0)
只需使用 __ dirname 即可获得dirname。
答案 6 :(得分:-1)
对于纯JavaScript,这将起作用:
function getDirName(e)
{
if(e === null) return '/';
if(e.indexOf("/") !== -1)
{
e = e.split('/') //break the string into an array
e.pop() //remove its last element
e= e.join('/') //join the array back into a string
if(e === '')
return '/';
return e;
}
return "/";
}
var e = '/this/is/a/path/to/a/file.html'
var e = 'file.html'
var e = '/file.html'
getDirName(e)