【问题标题】:How to work with files in XPCOM如何在 XPCOM 中处理文件
【发布时间】:2010-10-11 05:45:34
【问题描述】:

我正在编写一个 Mozilla 组件来获取页面中的所有链接,并使用 XPCOM 和 C++ 将它们写入文件。 我将所有链接放入这样的数组中:

//doc is a pointer to nsIDOMDocument
doc->GetElementsByTagName(NS_LITERAL_STRING("A"), getter_AddRefs(nodeList));
nodeList->GetLength(&nodeNumb);
href = new nsEmbedString[nodeNumb];

for(PRUnit32 i=0; i< nodeNumb; i++){
   nsCOMPtr<nsIDOMNode> aNode;
   nodeList->Item(i, getter_AddRefs(aNode));
   nsCOMPtr<nsIDOMHTMLAnchorElement> anchor = do_QueryInterface(aNode);
   if(anchor){
      (*outLinks)++;
      href[i] = anchor->GetHref(tempHref);  
   }
 } // end of for

但是现在我怎样才能让它们写入文件。我真的不知道如何在 XPCOM 中使用文件。有人可以给我一些提示或教程链接吗?

【问题讨论】:

  • 我对 XPCOM 不熟悉,但是你不能使用标准 C++ 流有什么原因吗?
  • @casablanca:XPCOM 提供了一些支持,以独立于平台的方式为此类文件找到合理的位置。在实践中,你会发现它在 Windows 上是不够的。

标签: c++ file components mozilla xpcom


【解决方案1】:

您可能见过nsIFile,它确实提供了IsWriteable() 方法,但没有write()。你会想要nsILocalFile::openANSIFileDesc(),它返回一个普通的FILE*

【讨论】:

  • 这意味着您必须担心自己关闭文件并让您处理特定于平台的问题。
【解决方案2】:

您需要使用nsIFileOutputStream

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2014-05-01
    • 2014-05-22
    • 2015-08-19
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多