方法: テキストのファイルへの書き込みHow to: Write text to a file

このトピックでは、.NET アプリ用のファイルにテキストを書き込むさまざまな方法を示します。This topic shows different ways to write text to a file for a .NET app.

テキストをファイルに書き込むには、一般に次のクラスおよびメソッドを使用します。The following classes and methods are typically used to write text to a file:

注意

次の例では、最小限必要なコードのみを示します。The following examples show only the minimum amount of code needed. 通常、実際のアプリではこれよりも信頼性の高いエラー チェックと例外処理を行います。A real-world app usually provides more robust error checking and exception handling.

例:StreamWriter で同期的にテキストを書き込むExample: Synchronously write text with StreamWriter

次の例では、StreamWriter クラスを使用して、新しいファイルにテキストを一度に 1 行ずつ同期的に書き込む方法を示します。The following example shows how to use the StreamWriter class to synchronously write text to a new file one line at a time. StreamWriter オブジェクトが宣言されていて、using ステートメントでインスタンス化されるため、Dispose メソッドが呼び出され、それによってストリームが自動的にフラッシュされて閉じられます。Because the StreamWriter object is declared and instantiated in a using statement, the Dispose method is invoked, which automatically flushes and closes the stream.

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
    
        // Create a string array with the lines of text
        string[] lines = { "First line", "Second line", "Third line" };

        // Set a variable to the Documents path.
        string docPath =
          Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

        // Write the string array to a new file named "WriteLines.txt".
        using (StreamWriter outputFile = new StreamWriter(Path.Combine(docPath, "WriteLines.txt")))
        {
            foreach (string line in lines)
                outputFile.WriteLine(line);
        }
    }
}
// The example creates a file named "WriteLines.txt" with the following contents:
// First line
// Second line
// Third line
Imports System.IO

Class WriteText

    Public Shared Sub Main()

        ' Create a string array with the lines of text
        Dim lines() As String = {"First line", "Second line", "Third line"}

        ' Set a variable to the Documents path.
        Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

        ' Write the string array to a new file named "WriteLines.txt".
        Using outputFile As New StreamWriter(Path.Combine(docPath, Convert.ToString("WriteLines.txt")))
            For Each line As String In lines
                outputFile.WriteLine(line)
            Next
        End Using

    End Sub

End Class

' The example creates a file named "WriteLines.txt" with the following contents:
' First line
' Second line
' Third line

例:StreamWriter で同期的にテキストを追加するExample: Synchronously append text with StreamWriter

次の例では、StreamWriter クラスを使用して、最初の例で作成したテキスト ファイルにテキストを同期的に追加する方法を示します。The following example shows how to use the StreamWriter class to synchronously append text to the text file created in the first example.

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {

        // Set a variable to the Documents path.
        string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

        // Append text to an existing file named "WriteLines.txt".
        using (StreamWriter outputFile = new StreamWriter(Path.Combine(docPath, "WriteLines.txt"), true))
        {
            outputFile.WriteLine("Fourth Line");
        }
    }
}
// The example adds the following line to the contents of "WriteLines.txt":
// Fourth Line
Imports System.IO

Class AppendText

    Public Shared Sub Main()

        ' Set a variable to the Documents path.
        Dim docPath As String =
            Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

        ' Append text to an existing file named "WriteLines.txt".
        Using outputFile As New StreamWriter(Path.Combine(docPath, Convert.ToString("WriteLines.txt")), True)
            outputFile.WriteLine("Fourth Line")
        End Using

    End Sub

End Class

' The example adds the following line to the contents of "WriteLines.txt":
' Fourth Line

例:StreamWriter で非同期的にテキストを書き込むExample: Asynchronously write text with StreamWriter

次の例に、 StreamWriter クラスを使用して、新しいファイルにテキストを非同期的に書き込む方法を示します。The following example shows how to asynchronously write text to a new file using the StreamWriter class. WriteAsync メソッドを呼び出すには、async メソッド内で呼び出す必要があります。To invoke the WriteAsync method, the method call must be within an async method. C# の例では、プログラム エントリ ポイントでの async 修飾子のサポートが追加されている C# 7.1 以降が必要です。The C# example requires C# 7.1 or later, which adds support for the async modifier on the program entry point.

using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        // Set a variable to the Documents path.
        string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

        // Write the specified text asynchronously to a new file named "WriteTextAsync.txt".
        using (StreamWriter outputFile = new StreamWriter(Path.Combine(docPath, "WriteTextAsync.txt")))
        {
            await outputFile.WriteAsync("This is a sentence.");
        }
    }
}
// The example creates a file named "WriteTextAsync.txt" with the following contents:
// This is a sentence.
Imports System.IO

Public Module Example
    Public Sub Main()
        WriteTextAsync()
    End Sub

    Async Sub WriteTextAsync()
        ' Set a variable to the Documents path.
        Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

        ' Write the text asynchronously to a new file named "WriteTextAsync.txt".
        Using outputFile As New StreamWriter(Path.Combine(docPath, Convert.ToString("WriteTextAsync.txt")))
            Await outputFile.WriteAsync("This is a sentence.")
        End Using
    End Sub
End Module

' The example creates a file named "WriteTextAsync.txt" with the following contents:
' This is a sentence.

例:File クラスを使用してテキストの書き込みと追加を行うExample: Write and append text with the File class

次の例に、 File クラスを使用して、新しいファイルにテキストを書き込み、この同じファイルに新しいテキスト行を追加する方法を示します。The following example shows how to write text to a new file and append new lines of text to the same file using the File class. WriteAllText および AppendAllLines メソッドは、ファイルを自動的に開き、閉じます。The WriteAllText and AppendAllLines methods open and close the file automatically. WriteAllText メソッドに指定したパスが既に存在する場合、ファイルは上書きされます。If the path you provide to the WriteAllText method already exists, the file is overwritten.

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // Create a string with a line of text.
        string text = "First line" + Environment.NewLine;

        // Set a variable to the Documents path.
        string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

        // Write the text to a new file named "WriteFile.txt".
        File.WriteAllText(Path.Combine(docPath, "WriteFile.txt"), text);

        // Create a string array with the additional lines of text
        string[] lines = { "New line 1", "New line 2" };

        // Append new lines of text to the file
        File.AppendAllLines(Path.Combine(docPath, "WriteFile.txt"), lines);
    }
}
// The example creates a file named "WriteFile.txt" with the contents:
// First line
// And then appends the following contents:
// New line 1
// New line 2
Imports System.IO

Class WriteFile

    Public Shared Sub Main()

        ' Create a string array with the lines of text
        Dim text As String = "First line" & Environment.NewLine

        ' Set a variable to the Documents path.
        Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

        ' Write the text to a new file named "WriteFile.txt".
        File.WriteAllText(Path.Combine(docPath, Convert.ToString("WriteFile.txt")), text)

        ' Create a string array with the additional lines of text
        Dim lines() As String = {"New line 1", "New line 2"}

        ' Append new lines of text to the file
        File.AppendAllLines(Path.Combine(docPath, Convert.ToString("WriteFile.txt")), lines)

    End Sub

End Class

' The example creates a file named "WriteFile.txt" with the following contents:
' First line
' And then appends the following contents:
' New line 1
' New line 2

関連項目See also