Linux 上的 UNC 路径构造
UNC path construction on Linux
我有一个函数使用 path.join
构造一个 UNC 路径供另一个 (Windows) 系统使用(Node.js 应用程序不需要访问它,它只需要正确构建路径):
function constructUncPath (fileName, userLastName) {
var storageLocation = getStorageLocation(); // Returns a UNC base path
var todayDateFormatted = moment().format('YYYYMMDD');
return path.join(storageLocation, userLastName + '_' + todayDateFormatted + '_' + fileName);
}
在 Windows 上它正确地创建了路径,但是在 Linux 上它失败了,因为它插入了正斜杠而不是反斜杠:
+ expected - actual
-\path\to/user_20150101_file.txt
+\path\to\user_20150101_file.txt
有没有办法强制 path.join
使用反斜杠而不是正斜杠?
或者我应该在加入后明确替换它们吗?
path.join() 不会这样做,因为它正在从 运行 所在的机器上获取正斜杠字符。有很多方法可以编写 path.join() 替换,但使用 .Replace("/", "\") 是最简单的。
顺便说一下,如果您不必支持 Windows 9x,那就别费心了。 Windows 将在那里使用正斜杠就好了。
我有一个函数使用 path.join
构造一个 UNC 路径供另一个 (Windows) 系统使用(Node.js 应用程序不需要访问它,它只需要正确构建路径):
function constructUncPath (fileName, userLastName) {
var storageLocation = getStorageLocation(); // Returns a UNC base path
var todayDateFormatted = moment().format('YYYYMMDD');
return path.join(storageLocation, userLastName + '_' + todayDateFormatted + '_' + fileName);
}
在 Windows 上它正确地创建了路径,但是在 Linux 上它失败了,因为它插入了正斜杠而不是反斜杠:
+ expected - actual -\path\to/user_20150101_file.txt +\path\to\user_20150101_file.txt
有没有办法强制 path.join
使用反斜杠而不是正斜杠?
或者我应该在加入后明确替换它们吗?
path.join() 不会这样做,因为它正在从 运行 所在的机器上获取正斜杠字符。有很多方法可以编写 path.join() 替换,但使用 .Replace("/", "\") 是最简单的。
顺便说一下,如果您不必支持 Windows 9x,那就别费心了。 Windows 将在那里使用正斜杠就好了。