9.C#文件和流操作(IO流)

文件和流操作是计算机编程中常用的操作,用于读取和写入数据到文件或从文件中读取数据。

目录

文件和目录操作: 

 文件操作:

目录操作: 

 文本文件读取:

文本文件读取: 

文本文件写入: 

 二进制文件读写

二进制文件读取: 

 二进制文件写入:

 流的概念和使用

 流的读取:

流的写入: 

笔记

文件和目录操作: 

文件和目录操作是计算机编程中常用的操作,用于处理文件系统中的文件和目录。这些操作可以包括创建、删除、复制、移动文件或目录,获取文件属性,检查文件或目录是否存在等。

在C#中,可以使用System.IO命名空间中的类来执行文件和目录操作。以下是一些常用的类和方法:

 文件操作:

  • File.Exists(path): 检查文件是否存在。
  • File.Create(path): 创建一个新文件。
  • File.Delete(path): 删除指定的文件。
  • File.Copy(sourcePath, destinationPath): 复制文件。
  • File.Move(sourcePath, destinationPath): 移动文件或重命名文件。
  • File.ReadAllText(path): 读取文本文件的内容。
  • File.WriteAllText(path, content): 将文本内容写入文件。

目录操作: 

  • Directory.Exists(path): 检查目录是否存在。
  • Directory.CreateDirectory(path): 创建一个新目录。
  • Directory.Delete(path): 删除指定的目录。
  • Directory.Move(sourcePath, destinationPath): 移动目录或重命名目录。
  • Directory.GetFiles(path): 获取指定目录中的所有文件。
  • Directory.GetDirectories(path): 获取指定目录中的所有子目录。
// 检查文件是否存在
string filePath = "C:\\path\\to\\file.txt";
bool fileExists = File.Exists(filePath);

// 创建新文件
string newFilePath = "C:\\path\\to\\newfile.txt";
File.Create(newFilePath);

// 复制文件
string sourcePath = "C:\\path\\to\\source.txt";
string destinationPath = "C:\\path\\to\\destination.txt";
File.Copy(sourcePath, destinationPath);

// 创建新目录
string newDirectoryPath = "C:\\path\\to\\newdirectory";
Directory.CreateDirectory(newDirectoryPath);

// 获取目录中的文件和子目录
string directoryPath = "C:\\path\\to\\directory";
string[] files = Directory.GetFiles(directoryPath);
string[] directories = Directory.GetDirectories(directoryPath);

// 删除文件
string filePathToDelete = "C:\\path\\to\\file.txt";
File.Delete(filePathToDelete);

// 删除目录
string directoryPathToDelete = "C:\\path\\to\\directory";
Directory.Delete(directoryPathToDelete, true);

 请注意,进行文件和目录操作时,请确保对文件和目录的访问权限,以及在执行操作之前进行适当的验证和错误处理。

 文本文件读取:

 在C#中,可以使用StreamReaderStreamWriter类进行文本文件的读写操作。这两个类都位于System.IO命名空间中。

文本文件读取: 

 要读取文本文件,可以使用StreamReader类。以下是一个示例:

using (StreamReader sr = new StreamReader("file.txt"))
{
    string line;
    while ((line = sr.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}

 在上述示例中,我们使用StreamReader打开名为"file.txt"的文本文件,并逐行读取文件内容。ReadLine()方法用于读取一行文本,直到读取到文件末尾为止。

文本文件写入: 

要将文本写入文件,可以使用StreamWriter类。以下是一个示例: 

using (StreamWriter sw = new StreamWriter("file.txt"))
{
    sw.WriteLine("Hello, World!");
    sw.WriteLine("This is a new line.");
}

在上述示例中,我们使用StreamWriter创建一个名为"file.txt"的新文本文件,并使用WriteLine()方法写入文本内容。每次调用WriteLine()都会写入一行文本。

请注意,使用StreamReaderStreamWriter时,使用using语句可以确保在完成操作后正确关闭文件。这样可以释放文件资源并避免潜在的资源泄漏。

 二进制文件读写

二进制文件读取: 

要读取二进制文件,可以使用BinaryReader类。以下是一个示例: 

using (BinaryReader br = new BinaryReader(File.OpenRead("file.bin")))
{
    int value = br.ReadInt32();
    float floatValue = br.ReadSingle();
    // 读取其他类型的数据
    // 处理读取的数据
}

在上述示例中,我们使用BinaryReader打开名为"file.bin"的二进制文件,并使用ReadInt32()ReadSingle()等方法按照特定类型读取数据。你可以根据文件中存储的数据类型使用适当的读取方法 

 二进制文件写入:

要将数据写入二进制文件,可以使用BinaryWriter类。以下是一个示例: 

using (BinaryWriter bw = new BinaryWriter(File.OpenWrite("file.bin")))
{
    int value = 42;
    float floatValue = 3.14f;
    bw.Write(value);
    bw.Write(floatValue);
    // 写入其他类型的数据
}

在上述示例中,我们使用BinaryWriter创建一个名为"file.bin"的新二进制文件,并使用Write()方法按照特定类型写入数据。你可以根据需要写入不同类型的数据。

 流的概念和使用

在计算机编程中,流(Stream)是一个抽象的概念,用于表示数据的连续序列,可以用于读取或写入数据。流可以连接到各种数据源,如文件、内存、网络等,提供了统一的读写接口,使得对数据的读写操作变得方便和灵活。

流的使用可以分为两个方面:流的读取和流的写入。

 流的读取:

流的读取操作涉及从数据源中读取数据并处理它们。通常,读取操作以字节为单位进行,可以将字节转换为相应的数据类型。

在C#中,可以使用Stream类及其派生类来进行流的读取操作。以下是读取流的基本步骤:

  1. 打开流对象,连接到特定的数据源。
  2. 使用读取方法(如Read(), ReadByte(), ReadAsync() 等)从流中读取数据。读取的数据通常存储在字节数组或缓冲区中。
  3. 处理读取的数据。

以下是一个示例,展示如何使用FileStream读取文件中的数据:

using (FileStream fs = File.OpenRead("file.txt"))
{
    byte[] buffer = new byte[1024];
    int bytesRead;
    while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
    {
        // 处理读取的数据
    }
}

 在上述示例中,我们使用FileStream打开名为"file.txt"的文件,并使用Read()方法从文件流中读取数据。读取的数据存储在名为buffer的字节数组中,而Read()方法返回读取的字节数。

流的写入: 

流的写入操作涉及将数据写入到特定的数据源中。写入操作可以以字节为单位进行,也可以将其他数据类型转换为字节后进行写入。

在C#中,可以使用Stream类及其派生类来进行流的写入操作。以下是写入流的基本步骤:

  1. 打开流对象,连接到特定的数据源。
  2. 使用写入方法(如Write(), WriteByte(), WriteAsync() 等)将数据写入流中。通常将数据转换为字节数组或缓冲区进行写入。
  3. 完成写入操作。

以下是一个示例,展示如何使用FileStream写入数据到文件中:

using (FileStream fs = File.OpenWrite("file.txt"))
{
    byte[] buffer = Encoding.UTF8.GetBytes("Hello, World!");
    fs.Write(buffer, 0, buffer.Length);
}

在上述示例中,我们使用FileStream打开名为"file.txt"的文件,并使用Write()方法将字节数组写入文件流中。

流的读取和写入操作可以在不同的流类型(如文件流、内存流、网络流等)上执行。具体使用哪种流类型取决于你的需求和数据源的类型。

笔记

File(静态)

创建

string path = @"D:\myFile.xtx";//路径
string str = "123";
File.WriteAllText(path ,str);//创建,添加字符串,关闭文件,如果有就覆盖
string[] strArr = {"123","456","789"}
File.WriteAllLines(path ,strArr);//
File.Exists(path);//判断该路径文件是否存在

读取

string path = @"D:\myFile.xtx";
string content = File.ReadAllText(path);//读取文件中所有字符串
string[] content1 = File.ReadAllLines(path);//读取文件中所有字符串数组

StreamWriter流写

string path = @"D:\myFile.xtx";
StreamWriter stream = new StreamWriter(oath);//创建
stream.WeiteLine("字符串");//写入内容,可一次写多个内容
stream.WeiteLine("字符串1");//写入内容,第二次为覆盖
stream.Weite("aaa");//不换行
stream.Close();//关闭

StreamReader流读

string path = @"D:\myFile.xtx";
StreamReader stream = new StreamWriter(path);//创建实例对象
string content = stream.ReadToEnd(path);//读取文件中的字符串
Console.WriteLine(content);
stream.Close();//关闭
//string[] content1 = File.ReadAllLines(path);//读取文件中所有字符串数组

FileStream追加数据

FileStream fs = new FileStream(path,FileMode.Append,FileAccess.Wrines)

创建文件夹

string Path = @"D:/10个文件";
Directory.CreateDirectory(Path);//创建文件夹
string aaa = Path.Combine(Path,"拼接文件".txt);//拼接路径          Path为关键字
string[] files = Directory.GetFiles(Path);//获取当前文件夹中所有的文件路径
  1. StreamReader 类用于读取文本文件的内容,而 StreamWriter 类用于写入文本数据到文件。

  2. Directory 类用于文件夹级别的操作,而 StreamReaderStreamWriterFileStream 类则用于具体的文件操作。

  3. StreamReaderStreamWriter 类主要针对文本数据的读写操作,而 FileStream 类可以处理任意类型的数据,包括二进制和文本数据。

  4. FileStream 类提供了更底层的文件读写操作,以字节为单位进行读写,而 StreamReaderStreamWriter 类提供了更高层次的文本数据读写功能。

  5. File 类是一个静态类,提供了对文件的常见操作的静态方法,它是对文件级别操作的封装,包括文件的读取、写入、复制和删除等功能。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值