获取真实文件名(区分大小写)

时间:2014-12-04 21:40:54

标签: javascript node.js

我在Windows上使用节点。我执行node folder/app

现在我想找到我的应用process.mainModule.filename的主要文件的名称,并且我确实收到了drive/folder/app.js

但我需要收到drive/folder/App.js因为这是文件的真实姓名。

哪种解决方法最简单?

1 个答案:

答案 0 :(得分:1)

没有直接好的方法来确定文件系统是不区分大小写的,并获得跨越所有操作系统的真实路径。

例如,' / proc / self / fd / [fd]'只在linux上。

但是在所有操作系统中都有一种愚蠢的方法。

此处的竞争源代码:https://gist.github.com/snowyu/bdc39a93d25503333991

以下咖啡脚本代码只是为了说明原则:

folderIsInsensitive = (aFolder)->
  t = tmp.fileSync template:'./_tmp-XXXXXXXXX'
  result = fs.existsSync t.name.toUpperCase()
  t.removeCallback()
  return result

getRealPathForInsensitive = (aPath)->
  result = ''
  while aPath and aPath != path.sep
    basename = path.basename(aPath).toLowerCase()
    aPath = path.dirname aPath
    dirs  = fs.readdirSync aPath
    for dir in dirs
      if dir.toLowerCase() is basename
        result = path.join dir, result
        break
  return result