从文件路径或URL获取目录

时间:2015-04-07 16:30:00

标签: javascript node.js

我正在尝试获取文件的目录位置,而且我不确定如何获取它。我似乎无法找到允许我这样做的模块。

例如说我有这个字符串:

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

并且结果不会返回我要查找的内容,它会获得包含文件名的完整路径。

那么,节点中是否有可以做到这一点并做得好的东西?

7 个答案:

答案 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)

使用node.js的path模块:

path.dirname('/this/is/a/path/to/a/file');

返回

'/this/is/a/path/to/a'

答案 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
  1. 将字符串拆分为由" /"分隔的数组
  2. 删除数组的最后一个元素(可以是文件名+扩展名)
  3. 加入阵列w /" /"生成目录路径

答案 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)