FileMode.Truncate
FileMode.Truncate требует, чтобы
abcde.txt уже был. Длина становится
0, новые байты пишутся с начала.
Если файла нет - ошибка, как у
Open.
См.
FileNotFoundException.
Синтаксис
using FileStream stream = File.Open(path, FileMode.Truncate);
Пример
Давайте обнулим файл с текстом:
using System;
using System.IO;
class Program
{
static void Main()
{
File.WriteAllText("abcde.txt", "12345");
using (FileStream stream = File.Open("abcde.txt", FileMode.Truncate))
{
Console.WriteLine(stream.Length);
}
int res = File.ReadAllText("abcde.txt").Length;
Console.WriteLine(res);
File.Delete("abcde.txt");
}
}
Результат выполнения кода:
0
0
Пример
Давайте записать новые байты после обнуления:
using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
File.WriteAllText("abcde.txt", "12345");
using (FileStream stream = File.Open(
"abcde.txt", FileMode.Truncate, FileAccess.Write))
{
byte[] data = Encoding.UTF8.GetBytes("abcde");
stream.Write(data, 0, data.Length);
}
string res = File.ReadAllText("abcde.txt");
Console.WriteLine(res);
File.Delete("abcde.txt");
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте отличить Truncate от
Create
по длине до открытия:
using System;
using System.IO;
class Program
{
static void Main()
{
File.WriteAllText("abcde.txt", "abcde");
long before = new FileInfo("abcde.txt").Length;
using (FileStream stream = File.Open("abcde.txt", FileMode.Truncate))
{
Console.WriteLine(before);
Console.WriteLine(stream.Length);
}
File.Delete("abcde.txt");
}
}
Результат выполнения кода:
5
0
Смотрите также
-
Create,
создать или обнулить -
FileAccess,
запись послеTruncate -
File.Open,
открытие сTruncate -
FileNotFoundException,
если файла нет