domingo, 24 de febrero de 2008

Creación de archivos temporales con C#

Los archivos temporales son usados generalmente para manipulación y almacenamiento de datos.
A menudo es necesario guardar datos como preferencias del usuario, información de sesion, log para errores y otros tipos de información.
En este caso usare la clase System.IO.Path y el método GetTempFileName para obtener el nombre del archivo en el directorio temporal del usuario actual. Existen otras enfoques para realizar esta tarea, pero usare este metodo ya que devuelve un nombre único.
Dicho lo anterior por cada llamada al método GetTempFileName se obtendrá un nombre diferente aun cuando no se use para crear fisicamente el archivo, lo cual es conveniente si se estan ejecutando varias instancias de tu aplicación y evitar colisiones.

Veamos como se ve el código:

using System;

using System.IO;

namespace TempFileSampleApp

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Este es un ejemplo de creacion de archivos temporales");

crearArchivoTemp();

}

static void crearArchivoTemp()

{

string curTempFileName="";

curTempFileName = Path.GetTempFileName();

//Ahora creamos fisicamente el archivo

using (StreamWriter sw = File.CreateText(curTempFileName))

{

sw.WriteLine("Primera linea del archivo");

sw.Close();

}

Console.WriteLine("Se ha creado el archivo temporal satisfactoriamente!!");

Console.ReadLine();

}

}

}


Bien espero que este tip te haya sido de utilidad y consulta mi blog frecuentemente ya que estaré publicando mas ejemplos proximamente sobre programación con .NET.
Saludos!

2 comentarios:

Anónimo dijo...

Gracias por el TIp, pero ahora tengo el siguiente proiblema, he creado el Temporal, pero necesito cargarle unos datos que tengo en formato byte. No se como hacerlo. Gracias

Tony dijo...

Hola Jose!
Mira lo que puedes hacer es usar la clase FileStream para crear tu archivo y guardar los datos en bytes.
En el siguiente ejemplo se crea un archivo temporal desde unos de los contructores de la clase FileStream y se usa el método write, para escribir en el archivo que acepta como argumentos un array de bytes, el offset del array desde donde comenzará la copia y el numero de bytes a escribir, en este caso si el archivo ya existe se sobreescribirá:

FileStream fs = new FileStream("C:/nuevo.txt",
FileMode.Create);
Byte[] bytes = new Byte[2];
bytes[0] = 35;
bytes[1] = 37;
fs.Write(bytes, 0, 2);
fs.Close();

Otras clases como File tambien devuelven objetos FileStream y podrias hacerlo tambien de esta forma:
FileStream fs = File.Create("C:/nuevo2.txt");
Byte[] bytes = new Byte[2];
bytes[0] = 35;
bytes[1] = 37
fs.Write(bytes, 0, 2);
fs.Close();

Espero te sea de utilidad!

Saludos!