文件和流操作是计算机编程中常用的操作,用于读取和写入数据到文件或从文件中读取数据。
目录
文件和目录操作:
文件和目录操作是计算机编程中常用的操作,用于处理文件系统中的文件和目录。这些操作可以包括创建、删除、复制、移动文件或目录,获取文件属性,检查文件或目录是否存在等。
在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#中,可以使用StreamReader
和StreamWriter
类进行文本文件的读写操作。这两个类都位于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()
都会写入一行文本。
请注意,使用StreamReader
和StreamWriter
时,使用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
类及其派生类来进行流的读取操作。以下是读取流的基本步骤:
- 打开流对象,连接到特定的数据源。
- 使用读取方法(如
Read()
,ReadByte()
,ReadAsync()
等)从流中读取数据。读取的数据通常存储在字节数组或缓冲区中。 - 处理读取的数据。
以下是一个示例,展示如何使用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
类及其派生类来进行流的写入操作。以下是写入流的基本步骤:
- 打开流对象,连接到特定的数据源。
- 使用写入方法(如
Write()
,WriteByte()
,WriteAsync()
等)将数据写入流中。通常将数据转换为字节数组或缓冲区进行写入。 - 完成写入操作。
以下是一个示例,展示如何使用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);//获取当前文件夹中所有的文件路径
-
StreamReader
类用于读取文本文件的内容,而StreamWriter
类用于写入文本数据到文件。 -
Directory
类用于文件夹级别的操作,而StreamReader
、StreamWriter
和FileStream
类则用于具体的文件操作。 -
StreamReader
和StreamWriter
类主要针对文本数据的读写操作,而FileStream
类可以处理任意类型的数据,包括二进制和文本数据。 -
FileStream
类提供了更底层的文件读写操作,以字节为单位进行读写,而StreamReader
和StreamWriter
类提供了更高层次的文本数据读写功能。 -
File
类是一个静态类,提供了对文件的常见操作的静态方法,它是对文件级别操作的封装,包括文件的读取、写入、复制和删除等功能。