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

有帮助吗?

解决方案

文件扩展名是您格式的任意选择,它实际上仅取决于您的应用程序在安装时将特定文件扩展名注册为 Windows 中特定类型的文件。

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

其他提示

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

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

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

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

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

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

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

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

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

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

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

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

或检查这个 代码项目的文章

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top