如何在C#中创建自定义文件扩展名?

问题描述:

我需要帮助,以了解如何在C#应用程序中创建自定义文件扩展名。我创建了基本的笔记管理应用程序。现在我将笔记保存为.rtf(note1.rtf)。我希望能够创建一个只有我的应用程序能够理解的文件扩展名(例如,note.not,也许)如何在C#中创建自定义文件扩展名?

+0

顺便说一句,与其他类型(不管其他类型)相比,什么是“自定义”扩展? – 2009-04-23 06:33:56

+0

@John - 请参阅Jon Limjap和Franci Penov的答案:-) – MarlonRibunal 2009-04-23 17:47:44

文件扩展名是您的格式的任意选择,它只依赖于您的应用程序注册某个文件扩展名为Windows中某种类型的文件,安装后。

通过自己的文件格式通常意味着使用只有您的应用程序可以解析的格式保存该格式。它可以是纯文本格式或二进制格式,甚至可以使用XML或任何格式,关键是您的应用程序应该能够轻松解析它。

我认为这是创造合适的注册表值,

问题或查看codeproject's article

您可以保存任何你想要的扩展文件,只要把它的文件名保存文件时。

我觉得你的问题是“我如何用RTF以外的东西来保存文件?”。你必须创造你自己的格式,但你实际上并不想要这样。您仍然可以将RTF保存到名为mynote.not的文件中。

我会建议你继续使用可从其他程序读取的格式。您的用户一旦想要使用他们的笔记做某些事情,而您的程序不支持,他们会很感激。

有你的问题的两种可能的解释:

应该是什么我的文档的文件格式?

您正在以RTF格式保存您的笔记。无论您选择将其保存为什么文件扩展名,任何了解RTF格式的应用程序都可以打开您的笔记,只要用户知道它在RTF中并将该应用程序指向该文件即可。

如果您想以自定义文件格式保存文档,以便其他应用程序无法读取它们。你需要想出一些代码,这些代码可以使用Rich Edit控件生成的RTF流(我假设你在你的应用中用作编辑器),并使用你自己的格式将它串行化为二进制流。

我个人不认为这是值得的......

什么是我的文档的文件扩展名

您目前保存RTF格式文档与.rtf文件扩展名。其他应用程序与该文件扩展名关联,因此在Windows资源管理器中双击此文件将打开该应用程序而不是您的应用程序。

如果您希望能够在Windows资源管理器中双击文件并打开您的应用程序,则需要更改所使用的文件扩展名,并为该扩展名创建适当的关联。

文件扩展名关联由注册表中的条目定义。您可以创建这些每台机器(在HKLM \ Software \ Classes)或每个用户(在HKCU \ Software \ Classes中),尽管每台机器是最常见的情况。有关实际注册表条目以及MSDN文档和示例链接的更多详细信息,请查看我对此的回答SO question on Vista document icon associations

作为部署点,您应该注意ClickOnce支持文件扩展名(只要它不处于“仅在线”模式)。这使配置系统识别新的文件扩展名变得轻而易举。

你可以在VS2008的项目属性 - >发布 - >选项 - >文件关联中找到它。如果你没有VS2008,你也可以do it manually,但它并不好玩。