Поделиться через


File.WriteAllLines Метод

Определение

Создает новый файл, записывает одну или несколько строк в файл, а затем закрывает файл.

Перегрузки

WriteAllLines(String, String[], Encoding)

Создает новый файл, записывает указанный массив строк в файл с помощью указанной кодировки, а затем закрывает файл.

WriteAllLines(String, IEnumerable<String>, Encoding)

Создает новый файл с помощью указанной кодировки, записывает коллекцию строк в файл, а затем закрывает файл.

WriteAllLines(String, IEnumerable<String>)

Создает новый файл, записывает коллекцию строк в файл, а затем закрывает файл.

WriteAllLines(String, String[])

Создает новый файл, записывает указанный массив строк в файл, а затем закрывает файл.

WriteAllLines(String, String[], Encoding)

Исходный код:
File.cs
Исходный код:
File.cs
Исходный код:
File.cs

Создает новый файл, записывает указанный массив строк в файл с помощью указанной кодировки, а затем закрывает файл.

public:
 static void WriteAllLines(System::String ^ path, cli::array <System::String ^> ^ contents, System::Text::Encoding ^ encoding);
public static void WriteAllLines (string path, string[] contents, System.Text.Encoding encoding);
static member WriteAllLines : string * string[] * System.Text.Encoding -> unit
Public Shared Sub WriteAllLines (path As String, contents As String(), encoding As Encoding)

Параметры

path
String

Файл для записи.

contents
String[]

Массив строк для записи в файл.

encoding
Encoding

Объект Encoding, представляющий кодировку символов, примененную к массиву строк.

Исключения

Версии .NET Framework и .NET Core старше 2.1: path представляет собой строку нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().

path или contentsnull.

Указанный путь, имя файла или оба превышают определенную системой максимальную длину.

Указанный путь недопустим (например, он находится на несопоставленном диске).

При открытии файла произошла ошибка ввода-вывода.

path указали файл, доступный только для чтения.

-или-

path указать скрытый файл.

-или-

Эта операция не поддерживается на текущей платформе.

-или-

path указан каталог.

-или-

Вызывающий объект не имеет требуемого разрешения.

path имеет недопустимый формат.

Вызывающий объект не имеет требуемого разрешения.

Примеры

В следующем примере кода показано использование метода WriteAllLines для записи текста в файл. В этом примере создается файл, если он еще не существует, и в него добавляется текст.

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string[] createText = { "Hello", "And", "Welcome" };
            File.WriteAllLines(path, createText, Encoding.UTF8);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText, Encoding.UTF8);

        // Open the file to read from.
        string[] readText = File.ReadAllLines(path, Encoding.UTF8);
        foreach (string s in readText)
        {
            Console.WriteLine(s);
        }
    }
}
open System
open System.IO
open System.Text

let path = @"c:\temp\MyTest.txt"

// This text is added only once to the file.
if File.Exists path |> not then
    // Create a file to write to.
    let createText = [ "Hello"; "And"; "Welcome" ]
    File.WriteAllLines(path, createText, Encoding.UTF8)

// This text is always added, making the file longer over time
// if it is not deleted.
let appendText =
    "This is extra text" + Environment.NewLine

File.AppendAllText(path, appendText, Encoding.UTF8)

// Open the file to read from.
let readText = File.ReadAllLines(path, Encoding.UTF8)

for s in readText do
    printfn $"{s}"
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim sw As StreamWriter

        ' This text is added only once to the file.
        If File.Exists(path) = False Then

            ' Create a file to write to.
            Dim createText() As String = {"Hello", "And", "Welcome"}
            File.WriteAllLines(path, createText, Encoding.UTF8)
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        Dim appendText As String = "This is extra text" + Environment.NewLine
        File.AppendAllText(path, appendText, Encoding.UTF8)

        ' Open the file to read from.
        Dim readText() As String = File.ReadAllLines(path, Encoding.UTF8)
        Dim s As String
        For Each s In readText
            Console.WriteLine(s)
        Next
    End Sub
End Class

Комментарии

Если целевой файл уже существует, он усечен и перезаписан.

Если массив строк и путь к файлу, этот метод открывает указанный файл, записывает массив строк в файл с помощью указанной кодировки, а затем закрывает файл.

Применяется к

WriteAllLines(String, IEnumerable<String>, Encoding)

Исходный код:
File.cs
Исходный код:
File.cs
Исходный код:
File.cs

Создает новый файл с помощью указанной кодировки, записывает коллекцию строк в файл, а затем закрывает файл.

public:
 static void WriteAllLines(System::String ^ path, System::Collections::Generic::IEnumerable<System::String ^> ^ contents, System::Text::Encoding ^ encoding);
public static void WriteAllLines (string path, System.Collections.Generic.IEnumerable<string> contents, System.Text.Encoding encoding);
static member WriteAllLines : string * seq<string> * System.Text.Encoding -> unit
Public Shared Sub WriteAllLines (path As String, contents As IEnumerable(Of String), encoding As Encoding)

Параметры

path
String

Файл для записи.

contents
IEnumerable<String>

Строки для записи в файл.

encoding
Encoding

Кодировка символов, используемая.

Исключения

Версии .NET Framework и .NET Core старше 2.1: path представляет собой строку нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов, определенных методом GetInvalidPathChars().

Либо path, contentsили encodingnull.

path недопустим (например, он находится на несопоставленном диске).

При открытии файла произошла ошибка ввода-вывода.

path превышает определенную системой максимальную длину.

path имеет недопустимый формат.

Вызывающий объект не имеет требуемого разрешения.

path указали файл, доступный только для чтения.

-или-

path указать скрытый файл.

-или-

Эта операция не поддерживается на текущей платформе.

-или-

path — это каталог.

-или-

Вызывающий объект не имеет требуемого разрешения.

Комментарии

Если целевой файл уже существует, он усечен и перезаписан.

Этот метод можно использовать для создания файла, содержащего следующее:

  • Результаты запроса LINQ to Objects строки файла, полученные с помощью метода ReadLines.

  • Содержимое коллекции, реализующей IEnumerable<T> строк.

Применяется к

WriteAllLines(String, IEnumerable<String>)

Исходный код:
File.cs
Исходный код:
File.cs
Исходный код:
File.cs

Создает новый файл, записывает коллекцию строк в файл, а затем закрывает файл.

public:
 static void WriteAllLines(System::String ^ path, System::Collections::Generic::IEnumerable<System::String ^> ^ contents);
public static void WriteAllLines (string path, System.Collections.Generic.IEnumerable<string> contents);
static member WriteAllLines : string * seq<string> -> unit
Public Shared Sub WriteAllLines (path As String, contents As IEnumerable(Of String))

Параметры

path
String

Файл для записи.

contents
IEnumerable<String>

Строки для записи в файл.

Исключения

Версии .NET Framework и .NET Core старше 2.1: path представляет собой строку нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов, определенных методом GetInvalidPathChars().

path или contentsnull.

path недопустим (например, он находится на несопоставленном диске).

При открытии файла произошла ошибка ввода-вывода.

path превышает определенную системой максимальную длину.

path имеет недопустимый формат.

Вызывающий объект не имеет требуемого разрешения.

path указали файл, доступный только для чтения.

-или-

path указать скрытый файл.

-или-

Эта операция не поддерживается на текущей платформе.

-или-

path — это каталог.

-или-

Вызывающий объект не имеет требуемого разрешения.

Примеры

В следующем примере записываются выбранные строки из примера файла данных в файл.

using System;
using System.IO;
using System.Linq;

class Program
{
    static string dataPath = @"c:\temp\timestamps.txt";

    static void Main(string[] args)
    {
        CreateSampleFile();

        var JulyWeekends = from line in File.ReadLines(dataPath)
                           where (line.StartsWith("Saturday") ||
                           line.StartsWith("Sunday")) &
                           line.Contains("July")
                           select line;

        File.WriteAllLines(@"C:\temp\selectedDays.txt", JulyWeekends);

        var MarchMondays = from line in File.ReadLines(dataPath)
                           where line.StartsWith("Monday") &&
                           line.Contains("March")
                           select line;

        File.AppendAllLines(@"C:\temp\selectedDays.txt", MarchMondays);
    }

    static void CreateSampleFile()
    {
        DateTime TimeStamp = new DateTime(1700, 1, 1);

        using (StreamWriter sw = new StreamWriter(dataPath))
        {
            for (int i = 0; i < 500; i++)
            {
                DateTime TS1 = TimeStamp.AddYears(i);
                DateTime TS2 = TS1.AddMonths(i);
                DateTime TS3 = TS2.AddDays(i);
                sw.WriteLine(TS3.ToLongDateString());
            }
        }
    }
}
open System
open System.IO

let dataPath = @"c:\temp\timestamps.txt"

let createSampleFile () =
    let timeStamp = DateTime(1700, 1, 1)

    use sw = new StreamWriter(dataPath)

    for i = 0 to 499 do
        let ts1 = timeStamp.AddYears i
        let ts2 = ts1.AddMonths i
        let ts3 = ts2.AddDays i
        ts3.ToLongDateString() |> sw.WriteLine

createSampleFile ()

let julyWeekends =
    File.ReadLines dataPath
    |> Seq.filter (fun line ->
        (line.StartsWith "Saturday"
         || line.StartsWith "Sunday")
        && line.Contains "July")

File.WriteAllLines(@"C:\temp\selectedDays.txt", julyWeekends)

let marchMondays =
    File.ReadLines dataPath
    |> Seq.filter (fun line -> line.StartsWith "Monday" && line.Contains "March")

File.AppendAllLines(@"C:\temp\selectedDays.txt", marchMondays)
Imports System.IO
Imports System.Linq

Class Program
    Shared dataPath As String = "c:\temp\timestamps.txt"

    Public Shared Sub Main(ByVal args As String())
        CreateSampleFile()

        Dim JulyWeekends = From line In File.ReadLines(dataPath) _
            Where (line.StartsWith("Saturday") OrElse _
            line.StartsWith("Sunday")) And line.Contains("July") _
            Select line

        File.WriteAllLines("C:\temp\selectedDays.txt", JulyWeekends)

        Dim MarchMondays = From line In File.ReadLines(dataPath) _
            Where line.StartsWith("Monday") AndAlso line.Contains("March") _
            Select line

        File.AppendAllLines("C:\temp\selectedDays.txt", MarchMondays)
    End Sub

    Private Shared Sub CreateSampleFile()
        Dim TimeStamp As New DateTime(1700, 1, 1)

        Using sw As New StreamWriter(dataPath)
            For i As Integer = 0 To 499
                Dim TS1 As DateTime = TimeStamp.AddYears(i)
                Dim TS2 As DateTime = TS1.AddMonths(i)
                Dim TS3 As DateTime = TS2.AddDays(i)

                sw.WriteLine(TS3.ToLongDateString())
            Next
        End Using
    End Sub
End Class

Комментарии

Поведение по умолчанию метода WriteAllLines(String, IEnumerable<String>) заключается в том, чтобы записывать данные с помощью кодировки UTF-8 без метки порядка байтов (BOM). Если необходимо включить идентификатор UTF-8, например метку порядка байтов, в начале файла, используйте перегрузку метода WriteAllLines(String, IEnumerable<String>, Encoding) с кодировкой UTF8.

Если целевой файл уже существует, он усечен и перезаписан.

Этот метод можно использовать для создания содержимого класса коллекции, который принимает IEnumerable<T> в конструкторе, например List<T>, HashSet<T>или класс SortedSet<T>.

Применяется к

WriteAllLines(String, String[])

Исходный код:
File.cs
Исходный код:
File.cs
Исходный код:
File.cs

Создает новый файл, записывает указанный массив строк в файл, а затем закрывает файл.

public:
 static void WriteAllLines(System::String ^ path, cli::array <System::String ^> ^ contents);
public static void WriteAllLines (string path, string[] contents);
static member WriteAllLines : string * string[] -> unit
Public Shared Sub WriteAllLines (path As String, contents As String())

Параметры

path
String

Файл для записи.

contents
String[]

Массив строк для записи в файл.

Исключения

Версии .NET Framework и .NET Core старше 2.1: path представляет собой строку нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().

path или contentsnull.

Указанный путь, имя файла или оба превышают определенную системой максимальную длину.

Указанный путь недопустим (например, он находится на несопоставленном диске).

При открытии файла произошла ошибка ввода-вывода.

path указали файл, доступный только для чтения.

-или-

path указать скрытый файл.

-или-

Эта операция не поддерживается на текущей платформе.

-или-

path указан каталог.

-или-

Вызывающий объект не имеет требуемого разрешения.

path имеет недопустимый формат.

Вызывающий объект не имеет требуемого разрешения.

Примеры

В следующем примере кода показано использование метода WriteAllLines для записи текста в файл. В этом примере создается файл, если он еще не существует, и в него добавляется текст.

using System;
using System.IO;
class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string[] createText = { "Hello", "And", "Welcome" };
            File.WriteAllLines(path, createText);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText);

        // Open the file to read from.
        string[] readText = File.ReadAllLines(path);
        foreach (string s in readText)
        {
            Console.WriteLine(s);
        }
    }
}
open System
open System.IO

let path = @"c:\temp\MyTest.txt"

// This text is added only once to the file.
if File.Exists path |> not then
    // Create a file to write to.
    let createText = [ "Hello"; "And"; "Welcome" ]
    File.WriteAllLines(path, createText)

// This text is always added, making the file longer over time
// if it is not deleted.
let appendText =
    "This is extra text" + Environment.NewLine

File.AppendAllText(path, appendText)

// Open the file to read from.
let readText = File.ReadAllLines path

for s in readText do
    printfn $"{s}"
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim sw As StreamWriter

        ' This text is added only once to the file.
        If File.Exists(path) = False Then

            ' Create a file to write to.
            Dim createText() As String = {"Hello", "And", "Welcome"}
            File.WriteAllLines(path, createText)
        End If

        ' This text is always added, making the file longer over time
        ' if it is not deleted.
        Dim appendText As String = "This is extra text" + Environment.NewLine
        File.AppendAllText(path, appendText)

        ' Open the file to read from.
        Dim readText() As String = File.ReadAllLines(path)
        Dim s As String
        For Each s In readText
            Console.WriteLine(s)
        Next
    End Sub
End Class

Комментарии

Если целевой файл уже существует, он усечен и перезаписан.

Поведение по умолчанию метода WriteAllLines заключается в написании данных с помощью кодировки UTF-8 без метки порядка байтов (BOM). Если необходимо включить идентификатор UTF-8, например метку порядка байтов, в начале файла, используйте перегрузку метода WriteAllLines(String, String[], Encoding) с кодировкой UTF8.

Если массив строк и путь к файлу, этот метод открывает указанный файл, записывает массив строк в файл, а затем закрывает файл.

Применяется к