2009-04-23 44 views
5

Necesito ayuda sobre cómo crear una extensión de archivo personalizada en mi aplicación C#. Creé una aplicación de administración de notas básica. En este momento estoy guardando mis notas como .rtf (note1.rtf). Quiero poder crear una extensión de archivo que solo mi aplicación comprende (como, note.not, quizás)cómo crear una extensión de archivo personalizada en C#?

+0

Por cierto, ¿qué es una extensión "personalizada" en comparación con la otra clase (cualquiera que sea el otro tipo)? –

+0

@John - Vea las respuestas de Jon Limjap y Franci Penov :-) – MarlonRibunal

Respuesta

8

Las extensiones de archivo son una opción arbitraria para sus formatos, y solo depende realmente de que su aplicación registre un determinado archivo extensión como un archivo de cierto tipo en Windows, luego de la instalación.

Programar con su propio formato de archivo generalmente significa que guarda ese formato usando un formato que solo su aplicación puede analizar. Puede ser en texto plano o binario, e incluso puede usar XML o cualquier formato, el punto es que tu aplicación debería poder analizarlo fácilmente.

2

creo que es una cuestión de crear los valores de registro adecuados,

o comprobar esta codeproject's article

+0

Y dejaría que su sistema de implementación (como un proyecto de instalación, generación de MSI, o lo que sea que use) se encargue de los detalles exactos del registro. – peSHIr

1

Puede guardar archivos con cualquier extensión que desee, sólo hay que poner en el nombre de archivo al guardar el archivo.

Tengo la sensación de que su problema es "¿Cómo puedo guardar el archivo en algo que no sea RTF?". Tendrás que inventar tu propio formato, pero en realidad no quieres eso. Aún puede guardar RTF en un archivo llamado mynote.not.

Le aconsejo que siga usando el formato legible desde otros programas. Sus usuarios estarán agradecidos una vez que quieran hacer algo con sus notas que no es compatible con su programa.

4

Hay dos posibles interpretaciones de su pregunta:

cuál debe ser el formato de archivo de los documentos?

Está ahorrando actualmente sus notas en formato RTF. Independientemente de la extensión de nombre de archivo que elija para guardarlos, cualquier aplicación que entienda el formato RTF podrá abrir sus notas, siempre que el usuario sepa que está en RTF y apunta esa aplicación a ese archivo.

Si desea guardar sus documentos en un formato de archivo personalizado, para que otras aplicaciones no puedan leerlos. necesita encontrar un código que tome la secuencia RTF producida por el control Rich Edit (supongo que es lo que usa como editor en su aplicación) y lo serializa en una secuencia binaria usando su propio formato.

personalmente no consideraría esto vale la pena el esfuerzo ...

¿Cuál es la extensión de archivo de mis documentos

En este momento está guardando los documentos en formato RTF con la extensión de nombre de archivo .rtf . Otras aplicaciones están asociadas a esa extensión de archivo, por lo que al hacer doble clic en dicho archivo en Windows Explorer se abre esa aplicación en lugar de su.

Si desea poder hacer doble clic en su archivo en el Explorador de Windows y abrir su aplicación, debe cambiar la extensión de nombre de archivo que está utilizando Y crear la asociación adecuada para esa extensión.

Las asociaciones de extensión de archivo se definen por entradas en el registro. Puede crear estos por máquina (en HKLM \ Software \ Classes) o por usuario (en HKCU \ Software \ Classes), aunque por máquina es el caso más común.Para obtener más detalles sobre las entradas de registro reales y los enlaces a la documentación y ejemplos de MSDN, consulte mi respuesta a este SO question on Vista document icon associations.

9

Como punto de implementación, debe tener en cuenta que ClickOnce admite extensiones de archivo (siempre que no esté en el modo "solo en línea"). Esto hace que sea muy fácil configurar el sistema para reconocer nuevas extensiones de archivo.

Puede encontrarlo en las propiedades del proyecto -> Publicar -> Opciones -> Asociaciones de archivos en VS2008. Si no tiene VS2008 también puede do it manually, pero no es divertido.

Cuestiones relacionadas