如何在 XPCOM 中处理文件
我正在编写一个 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 中使用文件。有人可以给我一些提示或教程链接吗?
I'm writing a Mozilla component to get all the links from a page an write them into a file using XPCOM and C++.
I get all the links into an array like this:
//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
but now how can I get them write to a file. I'm really clue less how to work with file in XPCOM. Can some one please give me some hints or links to tutorials please?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可能已经见过
nsIFile
,它确实提供了IsWriteable()
方法,但没有write()
。您需要nsILocalFile::openANSIFileDesc()
,它返回一个普通的FILE*
。You've probably seen
nsIFile
, which does offer anIsWriteable()
method but nowrite()
. You'd wantnsILocalFile::openANSIFileDesc()
, which returns an ordinaryFILE*
.您需要使用 nsIFileOutputStream。
You'll want to use an nsIFileOutputStream.