martes, 21 de julio de 2015

Receta C# No. 5-21: Cómo Obtener un Nombre de Archivo Aleatorio

Índice

0. Introducción
1. Problema
2. Solución
3. Discusión de la Solución
3.1 Método static GetRandomFileName
4. Práctica: Código C#
5. Conclusiones
6. Glosario
7. Literatura & Enlaces

0. Introducción

En la receta C# 5-15 estudiamos cómo obtener un archivo de archivo temporal: esta solución era requerida para crear un archivo y escribir datos de usuario o de aplicación; sin embargo en .NET contamos con un método alternativo para la obtención del nombre de archivo o directorio de forma aleatoria. Este será el tema de estudio de esta nueva receta C#; donde comprenderemos el uso del método GetRandomFileName de la clase Path.

1. Problema

Deseamos crear un nombre aleatorio y asignarlo a un directorio o a un archivo.

2. Solución

El método GetRandomFileName de la clase Path genera un nombre aleatorio asignable a un archivo o directorio.

3. Discusión de la Solución

3.1 Método static GetRandomFileName

El método static GetRandomFileName [3] de la clase Path [2] (System.IO) está diseñado para la generación de cadenas de caracteres aleatorias criptográficamente fuertes [3]. Estas cadenas de caracteres aleatorias las podemos asignar como nombre a un archivo o carpeta.

Este tipo de solución es útil para ambientes donde la seguridad del sistema de archivos de una aplicación es crítico; por lo tanto, es una solución más idónea a la vista en la receta -Receta C# No. 5-15: Cómo Crear un Archivo Temporal-.

Ejemplo de uso:

En este ejemplo generamos 25 cadenas de caracteres aleatorias para representar nombres de archivos.

Compilación: 


  1. csc /target:exe UsoGetRandomFileName.cs

Ejecución assembly:


  1. .\UsoGetRandomFileName.exe

> Prueba de ejecución: http://ideone.com/DRYejh

> Prueba de ejecución: 
Ejecución assembly UsoGetRandomFileName.exe
Figura 1. Ejecución assembly UsoGetRandomFileName.exe.

Notemos que en esta demostración de ejecución, los nombres de archivos siguen el patrón:
  • nombre_archivo.extensión

4. Práctica: Código C#

En este segundo ejemplo práctico crearemos un archivo a partir de la cadena de caracteres aleatoria.

Con Path.GetRandomFileName() creamos un nombre de archivo aleatorio y lo asignamos a la variable archivoTemporal (línea 15). Con using (líneas 20-23) creamos el archivo en el sistema de archivos. Notemos que en el constructor de FileStream el segundo argumento es valor FileMode.OpenOrCreate que indica que el archivo puede ser abierto o creado, a razón de que puede generarse el mismo nombre de archivo. El usuario borra el archivo presionando la tecla Enter (línea 26).

Compilación: 


  1. csc /target:exe CreacionArchivoNombreAleatorio.cs

Ejecución assembly


  1. .\CreacionArchivoNombreAleatorio.exe

> Prueba de ejecución: 
Ejecución assembly CreacionArchivoNombreAleatorio.exe
Figura 2. Ejecución assembly CreacionArchivoNombreAleatorio.exe.

6. Conclusiones

Hemos aprendido a crear nombres de archivos aleatorios criptográficamente fuertes usando el método static Path.GetRandomFileName. Ahora sabemos que este método es ideal para ambientes de seguridad donde sistema de archivos de la aplicación es un asunto crítico.


En la próxima receta C# estudiáremos cómo manipular una lista de control acceso de un archivo o directorio.

7. Glosario

  • Aleatoriedad
  • Archivo
  • Directorio
  • Nombre de archivo

8. Literatura & Enlaces

[1]: Visual C# 2010 Recipes by Allen Jones and Adam Freeman. Copyright 2010 Allen Jones and Adam Freeman, 978-1-4302-2525-6.
[2]: Path Class (System.IO) - https://msdn.microsoft.com/en-us/library/System.IO.Path(v=vs.110).aspx
[3]: Path.GetRandomFileName Method (System.IO) - https://msdn.microsoft.com/en-us/library/system.io.path.getrandomfilename(v=vs.110).aspx
[4]: Receta C# No. 5-15: Cómo Crear un Archivo Temporal - http://ortizol.blogspot.com/2015/07/receta-csharp-no-5-15-como-crear-un-archivo-temporal.html


V

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.