C#: Nombre de fichero aleatorio

Cuando escribes un post y tienes la responsabilidad de hacerlo en un lugar como puede ser geeks.ms, intentas que tenga un mínimo de calidad. En este caso sé que no es así, aunque no puedo evitar hacerlo, puesto que es un tema que me ha tocado las narices más de una vez.

En más de una ocasión me he encontrado con la necesidad de tener que tocar un fichero temporal, tanto en WinForms como en WebForms para, por ejemplo, descomprimir un fichero, tratar un documento en la web para descargarlo posteriormente… El caso es que, en un momento dado, necesitamos tener un nombre de fichero “aleatorio” para poder tratarlo de manera temporal. Nada más lejos de la realidad o, mejor dicho, nada más lejos de las librerías de .Net Framework, puesto que el propio Framework se encarga de, como casi siempre, solventarnos el problema…

El método GetRandomFileName() de la clase System.IO.Path nos permitirá tener un nombre de fichero aleatorio, el cual podremos usar sin tener que hacer uso de librerías propias extrañas para poder crear un fichero en una carpeta determinada.

Lo sé y pido disculpas por ello… No es un post con una calidad aceptable, pero creo que, de paso que puede servirme de recordatorio a mí, igual también tiene utilidad para aquellos a los que la memoria les falla tanto como a mí… ejemmm

string fileRandom = System.IO.Path.GetRandomFileName();

— Editado el día 28/2/11 para comentar lo siguiente:

En base a los comentarios, ¿qué se me ocurrió hacer?. Pues casi nada… Tan sólo dejar el ordenador almacenando nombres de ficheros generados por la función GetRandomFileName en una base de datos. Como no tenía mucha prisa, miraba, antes de la inserción a ver si existía. Resultado:

Dos millones de registros y no ha encontrado ningún duplicado. No es que la estadística sea mi fuerte, así que teniendo en cuenta que los nombres de los ficheros son de 8 caracteres más una extensión de 3,conteniendo letras y número, es fácil deducir que existen muchas más posibilidades que la cifra de dos millones, pero bueno, yo creo que ya ha llegado el momento de dejar de jugar con esto e intentar dedicarme a algo más serio… jeje

4 thoughts on “C#: Nombre de fichero aleatorio

  1. Si el objetivo es que no se repitan nombre en un mismo directorio le voy mas a usar la siguiente linea:

    String.Format(“{0}{1}.dat”, My.Application.Info.DirectoryPath, Guid.NewGuid.ToString(“N”))

    que te parece?..

    saludos! buen blog!

  2. Buenísimo! tengo que reconocer q me he encontrado con problemas similares y no conocía esta función. Algunas veces habia pensado en utilizar Guids o el famoso DateTime.Now, pero esta solución me gusta. Lo único es que tendré q investigar q posibilidades hay q repita valor, ya q se trata de algo aleatorio.
    Y por cierto, aun q tengas la suerte de escribir en geeks.ms, no tienen pq ser post siempre de altísimo nivel, con este mismo me has dado buenas ideas.
    Un saludo.

  3. Es curioso, supongo que la función evitará valores duplicados, con lo que podría ser interesante para otros menesteres.
    PD: Mejor un post “malo” de un tema interesante, que ningún post.

  4. Pues mira, ahora que leo los comentarios, la verdad es que nunca me había preocupado de si devuelve valores repetidos o no. Hasta el momento, siempre he hecho uso de esta función para algo temporal y luego, casi siempre lo borro. Me lo miraré.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *