6

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

4

5 回答 5

10

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

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

于 2009-04-23T07:29:28.160 回答
8

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

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

于 2009-04-23T04:32:08.430 回答
4

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

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

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

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

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

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

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

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

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

于 2009-04-23T06:26:26.987 回答
2

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

或查看此代码项目的文章

于 2009-04-23T04:35:35.537 回答
1

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

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

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

于 2009-04-23T04:36:38.547 回答