es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Puedo guardar un archivo desde un flujo u otro en mi ejecutable único de C#?

Me gustaría tomar un archivo serializado y guardarlo en mi carpeta de recursos en el proyecto.

Mi razón para hacer esto (tal vez haya una mejor manera) es que tengo un archivo .exe publicado (archivo ejecutable único) para el programa que se ejecuta y cuando crea un archivo serializado, no quiero que lo guarde en el escritorio. Necesito de alguna manera guardarlo en mi archivo .exe sin salir de él.

¿Alguna recomendación sobre cómo podría hacer esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para guardar un archivo serializado en la carpeta de recursos de tu proyecto, puedes utilizar la opción “Agregar elemento existente” en Visual Studio para añadir el archivo a tu proyecto. Una vez que el archivo se haya añadido, puedes establecer sus propiedades (a través de la ventana Propiedades de Visual Studio) para que el archivo se copie al directorio de salida al compilar. De esta manera, cuando se ejecute tu programa, el archivo serializado estará presente en la carpeta de recursos de tu ejecutable.

    Para acceder al archivo serializado dentro de tu código, puedes utilizar el objeto Properties.Resources en C#. Este objeto se puede utilizar para acceder a cualquier archivo que se haya añadido a los recursos del proyecto. Para cargar el archivo serializado en la memoria, puedes utilizar la clase ResourceManager para obtener un flujo hacia el archivo, y luego deserializar el archivo desde el flujo.

    Aquí tienes un ejemplo de cómo cargar un archivo serializado desde la carpeta de recursos:

    using System.IO;
    using System.Runtime.Serialization.Formatters.Binary;
    
    // Cargar datos serializados desde los recursos
    using (var flujo = new MemoryStream(Properties.Resources.data))
    {
        var formateador = new BinaryFormatter();
        var obj = formateador.Deserialize(flujo);
        // Haz algo con obj
    }
    

    En este ejemplo, data es el nombre del archivo serializado que se añadió a la carpeta de recursos. Los datos serializados se cargan en un objeto MemoryStream y luego se deserializan utilizando un BinaryFormatter.

    Al almacenar el archivo serializado en la carpeta de recursos, puedes asegurarte de que siempre esté presente en tu ejecutable, independientemente de dónde se ejecute tu programa.

Comments are closed.