Cómo lee ASP el contenido de la página web
Pero ¿qué pasa con ASP.NET? Todavía es posible utilizar FileSystemObject, pero la experiencia demuestra que hacerlo puede afectar gravemente al rendimiento del servidor. Por lo tanto, es mejor utilizar las clases proporcionadas por el propio marco .NET para leer archivos. En este artículo, veremos cómo leer archivos de texto; en el futuro, también veremos cómo leer archivos XML usando clases de .NET Framework.
¿Archivo ?FileInfo ?
En .NET Framework, hay muchas formas de abrir archivos de texto. Curiosamente, todos estos métodos se concentran en dos clases en el espacio de nombres System.IO. Espacio de nombres IO. Estas dos clases son la clase File y la clase FileInfo. La diferencia entre las dos clases es muy pequeña; los métodos de la clase File son todos métodos muy disfrutados (métodos estáticos), excepto la clase FileInfo. La excepción es la clase FileInfo. Los métodos que disfrutamos son métodos que se pueden llamar sin crear una instancia de la clase. Supongamos que desea eliminar un archivo usando estas dos clases, puede hacer esto:
'Usar clase de archivo
File.Delete(fileName)
'Usar Clase FileInfo
Atenuar fInfo como FileInfo
fInfo = new FileInfo(fileName)
fInfo.Delete()
Tenga en cuenta la eliminación de la clase File El método requiere solo un parámetro, el archivo que se va a eliminar, y se puede llamar sin crear una instancia de la clase File. El método Eliminar de la clase FileInfo no requiere parámetros porque el nombre del archivo se especifica en el constructor de la instancia de la clase FileInfo.
Personalmente, prefiero la clase Archivo, así que usémosla como modelo. Apostaría a que la clase File es un poco más eficiente ya que no tienes que preocuparte por crear instancias de la clase con ella, pero esa es solo mi suposición. (Si está interesado, no dude en comparar su rendimiento mediante programación. ¡Cuénteme los resultados cuando haya terminado!)
Abrir archivos
La forma más sencilla de abrir un texto file es llamar al método OpenText. Este método abrirá el archivo de texto en formato UTF-8 (ASCII). También puede elegir el método Abrir general para especificar el modo de operación del archivo (crear/abrir/añadir/truncar), los permisos (lectura/escritura/lectura-escritura) y los permisos del archivo, pero como solo necesita leer el archivo de texto, entonces; usar el método OpenText relativamente simple es suficiente.
El método OpenText devuelve un objeto StreamReader al que se puede acceder para leer el texto del archivo recién abierto.
Por lo tanto, el código ASP.NET para abrir el archivo se ve así:
lt @ Import Namespace="System.IO" gt
lt; runat= "server"gt;
sub Page_Load(remitente como objeto, e como EventArgs)
'Abrir el archivo como "solo lectura"
Dim FILENAME as String = Server.MapPath("Rand. Rand.MapPath("Rand.txt")
'Cree una instancia de clase StreamReader y prepárese para leer el contenido del archivo
Dim objStreamReader as StreamReader
objStreamReader = File.OpenText(FILENAME)
...
Tenga en cuenta que la primera línea de código importa el espacio de nombres System.IO porque el. La clase de archivo pertenece a ese espacio de nombres. Además, en el controlador de eventos Page_Load, se crea una cadena FILENAME, que es la ruta física del archivo que desea abrir (por ejemplo, C:\Inetpub\wwwroot\Rand.txt). , Server.MapPath en ASP.NET es el mismo que en ASP clásico (para comprender mejor Server.MapPath, no olvide leer "Uso de Server.MapPath" en /webtech/121799-1.shtml p>).
Leer texto de un archivo
Ahora se enfrenta a dos opciones: (1) leer la siguiente línea de texto en la posición actual del archivo como una cadena (2) leer la totalidad; file El texto se lee como una cadena. En el último caso, simplemente llama al método ReadToEnd():
'Ahora, se lee todo el texto del archivo. Contenido atenuado como String = objStreamReader.ReadToEnd()
...
¿Pero qué pasa si es lo primero? Antes de leer la siguiente línea de texto, ¿debe asegurarse? Todavía hay texto legible, intente usar el método Peek(), que devuelve el siguiente carácter de texto en la secuencia especificada pero no lo elimina de la secuencia si no hay más texto en la secuencia. Si es legible, se devuelve -1. .
'...Haz lo que necesites hacer...'
Finalizar mientras
¡Recuerda! ¡Cierre el objeto StreamReader!
Cuando hayas leído todo el texto y ya no estés procesando el archivo, recuerda cerrar el archivo cerrando el objeto StreamReader usando el método Close(). Si olvida cerrar el archivo, el proceso ASP.NET bloqueará el archivo en un estado de solo lectura y recibirá un mensaje de error "Acceso denegado" cuando intente utilizar otra cuenta para operar el archivo; elimine o sobrescriba el archivo. Recibirá el mismo mensaje de error; solo que el proceso ASP.NET no podrá hacerlo. Encontrará el mismo mensaje de error cuando intente eliminar o sobrescribir un archivo; sin embargo, el funcionamiento del archivo por parte de ASP.NET no se ve afectado. Por lo tanto, asegúrese de cerrar el archivo cuando haya terminado.
Adjunto: Programa de demostración completo
lt; @ Import Namespace="System.IO" gt
lt; server"gt;
sub Page_Load( remitente como objeto, e como EventArgs)
'Abrir un archivo como de solo lectura
Dim FILENAME as String = Server .MapPath("Rand.txt")
'Crear una instancia de un objeto StreamReader para leer archivos
Atenuar objStreamReader como StreamReader
objStreamReader = Archivo .OpenText(FILENA) OpenText(FILENAME)
'Ahora, lee el texto de todo el archivo y guárdalo como una cadena
Atenuar el contenido como String = objStreamReader.ReadToEnd()
'Mostrar el texto en un control Web
lblRawOutput.Close()
end sub
lt;/scriptgt;
lt ;bgt;Salida de archivos sin formatolt;/bgt;lt;br /gt;
lt;asp: label runat="server" id="lblRawOutput" /gt;
lt; pgt;
lt;pgt;
lt;bgt; Mejor resultadolt;/bgt;lt;br /gt;
lt;asp:label runat ="servidor" id ="lblNicerOutput" Font-Name="Verdana" /gt;
Conclusión
Este artículo viene con el código fuente de un programa de demostración. El programa simplemente abre un archivo de texto codificado, guarda todo el texto que contiene como una cadena especificada a la vez y luego muestra el valor de esa cadena en una etiqueta de control web en el lado del servidor.
Como puedes ver, leer el contenido de un archivo de texto a través de una página ASP.NET no es difícil. Aunque existen algunas diferencias de sintaxis con respecto al objeto ASP FileSystemObject clásico, es realmente fácil de aprender. Para comprender mejor la lectura y escritura de archivos en ASP.NET, asegúrese de leer el libro ASP.NET: sugerencias, tutoriales y códigos (hay ejemplos en /webtech/chapters/ASPNET2).