开放的编程资料库

当前位置:我爱分享网 > C#教程 > 正文

C#文件

在本文中,我们展示了如何在C#中处理文件。我们创建文件、读取文件、删除文件、写入文件和附加到文件。

要在C#中处理文件,我们使用System.IOSystem.Text命名空间。

System.IOFile类提供了创建、复制、删除、移动和打开单个文件的静态方法。它还有助于创建FileStream对象。

.NET中也有类似的FileInfoFileInfo是表示文件的文件实例,而File是用于处理任何文件的实用程序类。

words.txt文件

这是我们在某些示例中使用的文本文件。

sky
blue
cloud
raisin
tree
falcon
owl
eagle
rock
water
lake

C#文件.创建

File.create创建或覆盖指定路径中的文件。它返回一个FileStream,它提供对路径中指定文件的读/写访问。

using System.Text;

var path = "words.txt";

using FileStream fs = File.Create(path);
byte[] data = Encoding.UTF8.GetBytes("falcon\nribbon\ncloud");
fs.Write(data, 0, data.Length);

Console.WriteLine("data written to file");

该示例创建一个文件并向其中写入三个单词。

using FileStream fs = File.Create(path);

我们创建一个文件并将文件流检索到该文件。

byte[] data = Encoding.UTF8.GetBytes("falcon\nribbon\ncloud");

我们使用Encoding.UTF8.GetBytes获取要写入的三个单词的字节数。

fs.Write(data, 0, data.Length);

使用Write将字节写入文件。

C#File.CreateText

File.CreateText创建或打开用于写入UTF-8编码文本的文件。如果该文件已经存在,则其内容将被覆盖。它返回一个使用UTF-8编码写入指定文件的StreamWriter

var path = "words.txt";

using StreamWriter sw = File.CreateText(path);

sw.WriteLine("falcon");
sw.WriteLine("sky");
sw.WriteLine("cloud");

Console.WriteLine("data written to file");

该示例使用File.CreateText创建了一个新文件。它用WriteLine写入三个单词。

C#文件.复制

File.copy将现有文件复制到新文件。它以源文件和目标文件为参数。

var sourcePath = "words.txt";
var destPath = "words_bck.txt";

File.Copy(sourcePath, destPath);

Console.WriteLine("file copied");

该示例复制一个文本文件。

C#文件.移动

File.Move将指定文件移动到新位置。使用此方法,我们可以将文件移动到新位置或重命名文件。

var sourcePath = "words.txt";
var destPath = "data.txt";

File.Move(sourcePath, destPath);

Console.WriteLine("file moved");

该示例将words.txt重命名为data.txt

C#File.Exists

File.Exists判断指定的文件是否存在。

var path = "words2.txt";

if (File.Exists(path))
{
    Console.WriteLine("the file exists");
} else {

    Console.WriteLine("the file does not exist");
}

在代码示例中,我们检查words2.txt文件是否存在。

C#文件.删除

File.Delete删除指定的文件。

var path = "words.txt";

File.Delete(path);

Console.WriteLine("file deleted");

该示例删除一个文本文件。

C#File.GetCreationTime

File.GetCreationTime返回指定文件或目录的创建日期和时间。

var path = "words.txt";

DateTime dt = File.GetCreationTime(path);

Console.WriteLine($"Creation time: {dt}");

该示例打印words.txt文件的创建时间。

$ dotnet run
Creation time: 6/21/2020 10:41:16 AM

C#文件.GetLastWriteTime

File.GetLastWriteTime返回最后写入指定文件或目录的日期和时间。

var path = "words.txt";

DateTime dt = File.GetLastWriteTime(path);

Console.WriteLine($"Last write time: {dt}");

该示例打印文本文件的最后写入时间。

C#文件.打开

File.Open在指定路径上打开一个FileStreamFile.Open的重载方法允许指定文件模式(Open、Create、CreateNew、Truncate、Append或OpenOrCreate),文件访问(Read、Write、ReadWrite)。

文件共享值指定其他线程对文件的访问类型,例如删除、无、读取、读写、写入或可继承。

using System.Text;

var path = "words.txt";

using FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read);

byte[] buf = new byte[1024];
int c;

while ((c = fs.Read(buf, 0, buf.Length)) > 0)
{
    Console.WriteLine(Encoding.UTF8.GetString(buf, 0, c));
}

该示例读取words.txt文件的内容。

using FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read);

我们打开文件进行阅读。

byte[] buf = new byte[1024];
int c;

我们创建一个字节缓冲区和一个辅助变量。

while ((c = fs.Read(buf, 0, buf.Length)) > 0)
{
    Console.WriteLine(Encoding.UTF8.GetString(buf, 0, c));
}

Read方法从流中读取一个字节块并将数据写入给定的缓冲区。Encoding.UTF8.GetString将字节序列解码为字符串。

$ dotnet run
sky
blue
cloud
raisin
tree
falcon
owl
eagle
rock
water
lake

C#File.OpenRead

File.OpenRead打开现有文件进行读取。它返回指定路径上的只读FileStream。它是File.Open的便捷方法。

using System.Text;

var path = "words.txt";

using FileStream fs = File.OpenRead(path);

byte[] buf = new byte[1024];
int c;

while ((c = fs.Read(buf, 0, buf.Length)) > 0)
{
    Console.WriteLine(Encoding.UTF8.GetString(buf, 0, c));
}

该示例使用File.OpenRead读取文件。

C#File.OpenText

File.OpenText打开现有的UTF-8编码文本文件进行阅读。它返回指定路径上的StreamReader

var path = "words.txt";

using StreamReader sr = File.OpenText(path);

string s = String.Empty;

while ((s = sr.ReadLine()) != null)
{
    Console.WriteLine(s);
}

该示例打开一个文本文件并读取其内容。

while ((s = sr.ReadLine()) != null)
{
    Console.WriteLine(s);
}

我们逐行读取文本文件。我们不必自己将字节解码为字符串。

C#文件.OpenWrite

File.OpenWrite打开现有文件或创建新文件以进行写入。它返回指定路径上具有写入权限的FileStream对象。

var path = "langs.txt";

using FileStream fs = File.OpenWrite(path);
using StreamWriter sr = new StreamWriter(fs);

sr.WriteLine("PHP\nDart\nJava\nC#\n");

Console.WriteLine("data written");

该示例以写模式打开一个文件并向该文件写入一行。

using FileStream fs = File.OpenWrite(path);
using StreamWriter sr = new StreamWriter(fs);

我们打开指定路径的文件流。流被传递给StreamWriter,后者用于以特定编码(默认为UTF8)写入字符。

sr.WriteLine("PHP\nDart\nJava\nC#\n");

使用WriteLine将一行文本写入文件。

C#File.ReadLines

File.ReadLines打开一个文本文件,将文件的所有行读入一个字符串数组,然后关闭文件。

var path = "words.txt";

var lines = File.ReadLines(path);

foreach (var line in lines)
{
    Console.WriteLine(line);
}

该示例读取文本文件的所有行。使用foreach循环遍历返回的字符串数组。

C#文件.ReadAllText

File.ReadAllText打开一个文本文件,将文件中的所有文本读入一个字符串,然后关闭文件。请注意,此方法不应用于非常大的文件。

var path = "words.txt";

string readText = File.ReadAllText(path);
Console.WriteLine(readText);

该示例一次性将整个文本读入一个字符串。

C#文件.ReadAllBytes

File.ReadAllBytes打开一个二进制文件,将文件内容读入字节数组,然后关闭文件。

var path = "favicon.ico";
byte[] data = File.ReadAllBytes(path);

int i = 0;

foreach (byte c in data)
{
    Console.Write("{0:X2} ", c);
    i++;

    if (i % 10 == 0)
    {
        Console.WriteLine();
    }
}

该示例读取favicon.ico二进制文件。数据以十六进制格式打印到控制台。

$ dotnet run
00 00 01 00 01 00 10 10 00 00
00 00 00 00 68 05 00 00 16 00
00 00 28 00 00 00 10 00 00 00
20 00 00 00 01 00 08 00 00 00
00 00 00 01 00 00 00 00 00 00
00 00 00 00 00 01 00 00 00 00
00 00 00 00 00 00 FF FF FF 00
4D 45 3D 00 00 00 00 00 00 00
...

C#文件.WriteAllText

File.WriteAllText创建一个新文件,将内容写入文件,然后关闭文件。如果目标文件已经存在,则会被覆盖。

var path = "words.txt";

string data = "sky\ncloud\nfalcon\nowl\ncrane";
File.WriteAllText(path, data);

Console.WriteLine("data written");

在示例中,我们使用File.WriteAllText将四个单词写入一个文件。

C#文件.WriteAllLines

File.WriteAllLines创建一个新文件,将一个或多个字符串写入该文件,然后关闭该文件。

using System.Text;

var path = "words.txt";

string[] data = { "sky", "cloud", "falcon", "hawk" };
File.WriteAllLines(path, data, Encoding.UTF8);

Console.WriteLine("data written");

在示例中,我们有一个字符串数组。我们使用File.WriteAllLines将这些字符串一次性写入文件。

C#文件.WriteAllBytes

File.WriteAllBytes创建一个新文件,将指定的字节数组写入文件,然后关闭文件。

using System.Text;

var path = "words.txt";

var text = "falcon\nhawk\nforest\ncloud\nsky";
byte[] data = Encoding.UTF8.GetBytes(text);

File.WriteAllBytes(path, data);

Console.WriteLine("data written");

该示例使用File.WriteAllBytes将数据写入文件。

var text = "falcon\nhawk\nforest\ncloud\nsky";
byte[] data = Encoding.UTF8.GetBytes(text);

首先,我们使用Encoding.UTF8.GetBytes将文本数据转换为字节数组。

File.WriteAllBytes(path, data);

然后我们使用File.WriteAllBytes将数组写入文件。

C#File.AppendText

File.AppendText创建一个StreamWriter将UTF-8编码文本附加到现有文件,或者如果指定文件不存在则附加到新文件。

var path = "words.txt";

using StreamWriter sw = File.AppendText(path);

sw.WriteLine("sky");
sw.WriteLine("lake");

该示例将两个单词附加到words.txt文件。

C#File.AppendAllText

File.AppendAllText将指定的字符串附加到文件。如果文件不存在,则创建该文件。

var path = "words.txt";
var contents = "armour\nsword\narrow\n";

File.AppendAllText(path, contents);

Console.WriteLine("text appended to file");

该示例将三个单词附加到指定的文本文件。

C#File.AppendAllLines

File.AppendAllLines将行附加到文件,然后关闭文件。

var path = "words.txt";
var data = new List<string> {"brown", "blue", "khaki"};

File.AppendAllLines(path, data);

Console.WriteLine("data written to file");

该示例使用File.AppendAllLines将字符串列表附加到文件。

在本文中,我们使用了C#中的文件。我们使用了System.IOFile类。

列出所有C#教程。

未经允许不得转载:我爱分享网 » C#文件

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏