Flujo de archivos FileStream
FileStream
La 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
- Predeterminado: la codificación de la página de códigos ANSI actual del sistema operativo
- Unicode: Codificación en formato UTF-16 utilizando el orden de bytes Little-Endian
- 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);
}
}
}