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

时间:2009-04-23 04:29:06

标签: c# file-extension

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

5 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:8)

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

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

答案 2 :(得分:4)

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

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

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

如果要以自定义文件格式保存文档,以便其他应用程序无法读取它们。你需要提供一个代码来获取Rich Edit控件生成的RTF流(我假设你在应用程序中使用的是编辑器),并使用你自己的格式在二进制流中将其序列化。

我个人认为这不值得努力......

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

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

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

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

答案 3 :(得分:2)

我认为这是创建正确的注册表值的问题,

或查看此codeproject's article

答案 4 :(得分:1)

您可以使用您想要的扩展名保存文件,只需在保存文件时将其放在文件名中。

我觉得你的问题是“如何将文件保存在RTF以外的其他文件中?”。你必须发明自己的格式,但实际上你不希望这样。您仍然可以将RTF保存到名为mynote.not的文件中。

我建议你继续使用其他程序可读的格式。一旦他们想要对您的计划不支持的笔记做一些事情,您的用户将会感激不尽。