代码之家  ›  专栏  ›  技术社区  ›  MarlonRibunal

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

  •  5
  • MarlonRibunal  · 技术社区  · 15 年前

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

    5 回复  |  直到 14 年前
        1
  •  8
  •   Jon Limjap    15 年前

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

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

        2
  •  9
  •   Marc Gravell    15 年前

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

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

        3
  •  4
  •   Community Egal    7 年前

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

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

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

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

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

    我的文件扩展名是什么

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

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

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

        4
  •  2
  •   Jhonny D. Cano -Leftware-    15 年前

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

    或者检查这个 codeproject's article

        5
  •  1
  •   Srdjan Jovcic    15 年前

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

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

    我建议你继续使用其他程序可读的格式。一旦你的用户想对你的程序不支持的笔记做些什么,他们会很感激的。