Ejemplo 41 flujo de archivos de lectura y escritura

Clase FileStream

https://docs.microsoft.com/zh-cn/dotnet/api/system.io.filestream?view=netframework-4.8

Espacio de nombres: System.IO

Ensamblado: mscorlib.dll

Proporcione Stream para archivos  , admitiendo tanto operaciones de lectura y escritura sincrónicas como operaciones de lectura y escritura asincrónicas.

Comentario

Utilice la   clase FileStream para leer, escribir, abrir y cerrar archivos en el sistema de archivos. También puede manipular otros identificadores del sistema operativo relacionados con los archivos, incluidas las canalizaciones, la entrada estándar y la salida estándar. Puede usar los   métodos Read , Write , CopyToFlush para realizar operaciones sincrónicas, o los  métodos ReadAsync , WriteAsync , CopyToAsyncFlushAsync  para realizar operaciones asincrónicas. Use métodos asincrónicos para realizar operaciones de archivo con uso intensivo de recursos sin bloquear el hilo principal. Esta consideración de rendimiento es especialmente importante cuando una operación de flujo que lleva mucho tiempo en una aplicación de tienda de aplicaciones de Windows 8.x o una aplicación de escritorio puede bloquear el hilo de la interfaz de usuario y hacer que su aplicación parezca que no funciona. FileStream  almacena entradas y salidas para mejorar el rendimiento.

 Importante

Este tipo implementa la   interfaz IDisposable . Después de usar el tipo, debe liberar el tipo directa o indirectamente. Para liberar el tipo directamente , llame a su  método en  Disposetry / block  catch. Para liberar tipos indirectamente, use  construcciones de lenguaje using(en C #) o  Using(en Visual Basic). Para obtener más información, consulte   la sección "Uso de objetos que implementan IDisposable" en el tema de la interfaz IDisposable .

La  propiedad IsAsync detecta si el identificador de archivo se ha abierto de forma asincrónica. Tener  isAsync, useAsyncoptions crear un constructor parámetro  FileStream  clase ejemplo, puede especificar este valor. Si se  trueatribuye, la secuencia utilizará E / S superpuestas para realizar operaciones de archivo de forma asincrónica. Sin embargo, no es necesario   llamar a los métodos ReadAsync , WriteAsyncCopyToAsync  con el atributo  true IsAsync . Cuando se  llama a la  propiedad IsAsync y se llaman a las operaciones asíncronas de lectura y escritura, el subproceso de la interfaz de usuario aún no se bloqueará, pero las operaciones de E / S reales se realizarán sincrónicamente. El  método Seek admite acceso aleatorio a archivos. Seek  permite mover la posición de lectura / escritura a cualquier posición en el archivo. Esto se logra haciendo referencia al parámetro de punto por byte offset. El desplazamiento de bytes es relativo al punto de referencia de búsqueda. Puede ser el comienzo, la posición actual o el final del archivo base y está representado por  los tres miembros enumerados por  SeekOrigin .false 

      Al usar esta clase, primero debe definir una instancia de esta clase, es decir, un objeto, y leer y escribir archivos usando las propiedades y métodos de este objeto. El objeto de flujo de archivos se define de la siguiente manera:
    Objeto Dim como objeto FileStream
    = NewFileStream (ruta, modo, acceso, compartir, tamaño de búfer, isAsync)

    El significado de cada valor de parámetro del constructor de flujo de archivos es el siguiente:

  • ruta, nombre de ruta del archivo:
  • Modo, arado de clase de enumeración FileMode, modo de archivo abierto;
  • Access, el tipo de enumeración FileAccess, determina cómo el objeto FileStream accede al archivo;
  • Compartir, tipo de enumeración FileShare, método para compartir archivos;
  • Buffersize, el buffer requerido es pequeño;
  • isAsync, entrada y salida síncrona o asíncrona.

    El constructor de FileStream se puede sobrecargar varias veces. Al crear un nuevo objeto de flujo de archivos, solo se pueden dar los primeros parámetros.

    Los valores del tipo de enumeración FileMode incluyen:

  • Anexar, agregar al final del archivo;
  • Crear, crear un archivo, puede sobrescribir;
  • CrcateNew, crea un nuevo archivo;

Abrir, abrir el archivo:

  • OpenOrCreate, abra el archivo y créelo si no existe.

    Los valores del tipo de enumeración FileAccess incluyen:

  • Leer, el acceso al archivo es leer el archivo;
  • ReadWrite, lee y escribe archivos;
  • Escribir, escribir archivos.

    Los valores del tipo de enumeración FileShare incluyen:

  • Leer, permitiendo que otros usuarios lean y accedan al archivo;
  • ReadWrite, que permite a otros usuarios leer y escribir el acceso a los archivos;
  • Escribir, permite a otros usuarios escribir en el archivo.

       Después de definir el objeto de flujo de archivos, el contenido del archivo puede leerse con el método de lectura, y el contenido del archivo puede reescribirse con el método de escritura. Los métodos de lectura y escritura tienen tres parámetros: el primer parámetro es una matriz, que representa los datos leídos del archivo o la matriz escrita en el archivo; el segundo parámetro representa la posición inicial de la lectura o escritura; el tercer parámetro representa Esta operación debe procesar varios datos.
    El archivo se cierra con el método Cerrar.

Módulo Módulo1

    Sub Main ()
        testStream ()

        Console.Read ()
    End Sub

    Private Sub testStream ()
        Dim DataWrite (10) Como Byte
        Dim DataRead (10) Como Byte
        Dim i Como Entero
        Para i = 0 a 10
            DataWrite (i) = i * 3
        Siguiente

        Dim testFs As IO.FileStream
        testFs = New IO.FileStream ("J: \ test \ Stream.txt", IO.FileMode.OpenOrCreate, IO.FileAccess.Write)
        testFs.Write (DataWrite, 0, 11)
        testFs.Close ( )

        testFs = Nuevo IO.FileStream ("J: \ test \ Stream.txt", IO.FileMode.Open, IO.FileAccess.Read)
        testFs.Read (DataRead, 0, 11)
        testFs.Close ()

        Para i = 0 a 10
            Console.WriteLine (DataRead (i))
        Next
    End Sub
End Module
 

Publicados 146 artículos originales · ganado elogios 0 · Vistas 2727

Supongo que te gusta

Origin blog.csdn.net/ngbshzhn/article/details/105616070
Recomendado
Clasificación