Lectura y escritura de datos: realice funciones de lectura y escritura de datos basadas en scripts de C# en Unity

Flujo de archivos FileStream

FileStreamLa clase es una secuencia que expone principalmente archivos y admite operaciones de lectura y escritura sincrónicas y operaciones de lectura y escritura asincrónicas. Espacios de nombres:System.IO

Declaración

FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);

Descripción de parámetros

  • filePath proporciona la ruta del archivo que se va a leer

  • La enumeración FileMode define varias formas de abrir archivos

    • Agregar : abre un archivo existente y coloca el cursor al final del archivo. Cree el archivo si no existe;

    • Crear : Crea un nuevo archivo. Si el archivo ya existe, elimine el archivo antiguo y cree uno nuevo;

    • CreateNew : especifica que el sistema operativo debe crear un nuevo archivo o lanzar una excepción si el archivo ya existe;

    • Abrir : abre un archivo existente, si el archivo no existe, se lanza una excepción;

    • OpenOrCreate : especifique que el sistema operativo debe abrir un archivo existente, si el archivo no existe, cree un nuevo archivo con el nombre especificado para abrir;

    • Truncar : abre un archivo existente. Una vez que se abre el archivo, se truncará a un tamaño de cero bytes. Entonces podemos escribir datos completamente nuevos en el archivo, pero manteniendo la fecha de creación original del archivo. Se lanza una excepción si el archivo no existe.

  • La enumeración FileAccess define varios derechos de acceso

    • Lectura : obtenga acceso de lectura al archivo, lo que permite leer los datos del archivo (solo lectura).

    • ReadWrite : Obtenga el permiso de acceso para leer y escribir archivos, y luego puede leer y escribir datos del archivo (legible y escribible).

    • Escritura : obtenga acceso de escritura al archivo para que los datos se puedan escribir en el archivo (solo escritura).

  • La enumeración FileShare define los tipos de acceso que puede tener al mismo archivo

    • Heredable : permite que los identificadores de archivo sean heredados por procesos secundarios.

    • Ninguno : Rechazar compartir el archivo actual. Cualquier solicitud para abrir el archivo (por este proceso u otro proceso) fallará hasta que se cierre el archivo.

    • Leer : Permite la apertura posterior del archivo para su lectura. Si no se especifica este indicador, cualquier solicitud para abrir el archivo para lectura fallará hasta que se cierre el archivo. Sin embargo, incluso con este indicador especificado, es posible que se requieran permisos adicionales para poder acceder al archivo.

    • ReadWrite : permite la apertura posterior del archivo para lectura o escritura. Si no se especifica este indicador, cualquier solicitud para abrir el archivo para lectura o escritura fallará hasta que se cierre el archivo. Sin embargo, incluso con este indicador especificado, es posible que se requieran permisos adicionales para poder acceder al archivo.

    • Escribir : Permite la posterior apertura del archivo para escritura. Si no se especifica este indicador, cualquier solicitud para abrir el archivo para escritura fallará hasta que se cierre el archivo. Sin embargo, incluso con este indicador especificado, es posible que se requieran permisos adicionales para poder acceder al archivo.

    • Eliminar : permite la eliminación posterior del archivo.


Clase StreamReader: leer secuencia de archivos

En el lenguaje C#, la clase StreamReader se usa para leer cadenas de una secuencia. Hereda de la clase TextReader.

Constructor

Hay muchos métodos de construcción de la clase StreamReader, y los métodos de construcción comúnmente usados ​​son los siguientes:

Método de construcción ilustrar
StreamReader (flujo de flujo) Crea una instancia de la clase StreamReader para la secuencia especificada
StreamReader (ruta de la cadena) Cree una instancia de la clase StreamReader para el archivo en la ruta especificada
StreamReader (flujo de flujo, codificación de codificación) Inicializa una instancia de la clase StreamReader para el flujo especificado con la codificación de caracteres especificada
StreamReader (ruta de cadena, codificación de codificación) Inicializa una instancia de la clase StreamReader para el archivo especificado con la codificación de caracteres especificada

Formatos de codificación comúnmente utilizados en Codificación

  1. Predeterminado: la codificación de la página de códigos ANSI actual del sistema operativo
  2. Unicode: Codificación en formato UTF-16 utilizando el orden de bytes Little-Endian
  3. UTF-8: codificación UTF-8

propiedades miembro, funciones miembro

Las propiedades y los métodos comúnmente utilizados en la clase StreamReader son los siguientes:

propiedad o método efecto
Codificación Codificación actual Propiedad de solo lectura, obtenga el método de codificación utilizado en la transmisión actual
booleano EndOfSteam Propiedad de solo lectura, para saber si la posición actual de la transmisión está al final de la transmisión.
anular Cerrar () cerrar corriente
vistazo int() Entero para obtener el siguiente carácter en la secuencia, o -1 si no se obtiene ningún carácter.
lectura int() un número entero para obtener el siguiente carácter en la secuencia
int Read(char[] buffer, int index, int count) Lee el número máximo de caracteres especificado de la secuencia actual en el búfer comenzando en la posición de índice especificada
cadena LeerLínea() Lea una línea de caracteres de la secuencia actual y devuelva los datos como una cadena
cadena Leer hasta el final () lee todos los caracteres desde la posición actual de la secuencia hasta el resultado

ejemplo de código

Primero obtenga el flujo de archivos, luego construya un StreamReader a través del flujo de archivos para leer el flujo de archivos, o construya directamente un StreamReader a través de la ruta para leer el flujo de archivos (consulte el método de escritura de un flujo de archivos a continuación).

class Program
{
    
    
    static void Main(string[] args)
    {
    
    
    	//文件路径
    	string filePath = Application.dataPath + "/Data/task.csv";
        //按照文件路径打开获取文件流,并获取该文件流的编码格式
        FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
        
        //使用文件流相应的字符编码格式来读取文件流
        StreamReader streamReader = new StreamReader(fileStream);

        //记录每次读取的一行记录
        string strLine;
        //逐行读取CSV中的数据
        while ((strLine = streamReader.ReadLine()) != null)
        {
    
    
        	//对数据进行操作
        	Console.WriteLine(strLine);
        }
        streamReader.Close();
    }
}

Clase StreamWriter: escribir en el archivo

En el lenguaje C#, la clase StreamWriter se usa para escribir cadenas en la secuencia.

Constructor

Hay muchos métodos de construcción de la clase StreamWriter, y los métodos de construcción comúnmente utilizados son los siguientes:

Método de construcción ilustrar
StreamWriter (flujo de flujo) Crea una instancia de la clase StreamWriter para la secuencia especificada
StreamWriter (ruta de cadena) Cree una instancia de la clase StreamWriter para el archivo en la ruta especificada
StreamWriter (flujo de flujo, codificación de codificación) Inicializa una instancia de la clase StreamWriter para el flujo especificado con la codificación de caracteres especificada
StreamWriter (ruta de cadena, codificación de codificación) Inicializa una instancia de la clase StreamWriter para el archivo especificado con la codificación de caracteres especificada

propiedades miembro, funciones miembro

Las propiedades y los métodos comúnmente utilizados en la clase StreamWriter son los siguientes:

propiedad o método efecto
vaciado automático booleano Atribuir, obtener o establecer si actualizar automáticamente el búfer
Codificación Codificación Propiedad de solo lectura, obtenga el método de codificación utilizado en la transmisión actual
anular Cerrar () cerrar corriente
vaciar al ras() tampón de descarga
int Escribir (valor de carácter) escribe caracteres en la secuencia
void WriteLine (valor de carácter) escribe una nueva línea de caracteres en la secuencia
Tarea WriteAsync(valor char) escribe caracteres en la secuencia de forma asíncrona
Tarea WriteLineAsync(valor char) escribe caracteres en una secuencia de forma asíncrona

ejemplo de código

Construya directamente un StreamWriter a través de la ruta para leer el flujo de archivos, u obtenga primero el flujo de archivos y luego construya un StreamReader a través del flujo de archivos para leer el flujo de archivos (consulte el método de lectura del flujo de archivos anterior).

public void WriteCsv(string strs, string path)
    {
    
    
        if (!File.Exists(path))
        {
    
    
            File.Create(path).Dispose();
        }
        else
        {
    
    
            File.Delete(path);
            File.Create(path).Dispose();
        }
        string mystr;
        //UTF-8方式保存,true表示追加的写入方式,改成false就是直接覆盖写入
        using (StreamWriter stream = new StreamWriter(path, true, Encoding.UTF8))
        {
    
    
            for (int i = 0; i < Data.SolList.Count; i++)
            {
    
    
                mystr = "";
                Solution sol = Data.SolList[i];
                //mystr保存一行数据,不同列的元素之间使用 "," 隔开
                mystr = sol.SolutionID.ToString() + "," + sol.MakeSpan.ToString() + "," + sol.WaitTime.ToString() + "," + sol.Balance.ToString() + "," + sol.Category;
                stream.WriteLine(mystr);
            }
        }
    }

Supongo que te gusta

Origin blog.csdn.net/qq_33021529/article/details/125508579
Recomendado
Clasificación