如何检查XPCOM组件中的目录分隔符

发布于 2024-11-03 18:44:50 字数 309 浏览 5 评论 0原文

我试图从谷歌找到答案,但失败了。
我熟悉python,在其中我们可以通过“os.path.sep”检查特定于平台的目录分隔符。

XPCOM 组件中是否有某种方法或某些常量可以指示路径分隔符?
或者有没有办法标准化特定于平台的路径?

例如,用户在窗口下输入文件路径:C:/path1/path2/test.txt
如果我不使路径平台有效,则使用 nsILocalFile::initWithPath 将引发异常。有效路径应为“C:\path1\path2\test.txt”。所以我想知道有没有办法使路径有效并可以初始化 nsILocalFile。

I am trying to find the answer from google, but i am failed.
I am familiar with python, in which we can check the platform-specific directory separator by "os.path.sep".

Is there a way or some constant in XPCOM component that can indicate the path separator?
Or is there a way to normalize the path specific to platform?

For example, user input a file path under window: C:/path1/path2/test.txt
Using nsILocalFile::initWithPath will throw exception if I do not make the path platform valid. The valid path should be "C:\path1\path2\test.txt". So I wonder there is way to make a path valid and can init the nsILocalFile.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

阪姬 2024-11-10 18:44:50
/**
 * Returns file path separator under current OS
 */
function getPathSeparator()
{
    var profD = Components.classes["@mozilla.org/file/directory_service;1"].
                getService(Components.interfaces.nsIProperties).
                get("ProfD", Components.interfaces.nsIFile);
    profD.append("abc");
    profD.append("abc");
    var length = profD.path.length;
    return profD.path.substr(length-("abc".length)-1,1);
}
/**
 * Returns file path separator under current OS
 */
function getPathSeparator()
{
    var profD = Components.classes["@mozilla.org/file/directory_service;1"].
                getService(Components.interfaces.nsIProperties).
                get("ProfD", Components.interfaces.nsIFile);
    profD.append("abc");
    profD.append("abc");
    var length = profD.path.length;
    return profD.path.substr(length-("abc".length)-1,1);
}
彡翼 2024-11-10 18:44:50

您可以将 nsIIOService.newURI 与 file:// URI 一起使用,并获取 nsIFileURL 对象,从中您可以获取 nsIFile 对象。您可以从 nsIFile 对象获取路径信息。

You can use nsIIOService.newURI with a file:// URI, and get a nsIFileURL object back, from which you can get an nsIFile object back. You can get the path information from the nsIFile object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文