FileInfo.CopyTo メソッド (String, Boolean)

既存のファイルを上書きできるようにして、既存のファイルを新しいファイルにコピーします。

Overloads Public Function CopyTo( _
   ByVal destFileName As String, _   ByVal overwrite As Boolean _) As FileInfo
[C#]
public FileInfo CopyTo(stringdestFileName,booloverwrite);
[C++]
public: FileInfo* CopyTo(String* destFileName,booloverwrite);
[JScript]
public function CopyTo(
   destFileName : String,overwrite : Boolean) : FileInfo;

パラメータ

  • destFileName
    コピー先の新しいファイルの名前。
  • overwrite
    既存のファイルを上書きできるようにする場合は true 。それ以外の場合は false

戻り値

新しいファイル。または、 overwritetrue の場合は、既存のファイルを上書したファイル。ファイルが既に存在している場合に、 overwritefalse に設定されていると、 IOException がスローされます。

例外

例外の種類 条件
ArgumentException destFileName が空か、空白だけが含まれているか、または無効な文字が含まれています。
IOException エラーが発生したか、または、コピー先のファイルが既に存在しているけれども overwritefalse です。
SecurityException 呼び出し元に、必要なアクセス許可がありません。
ArgumentNullException destFileName が null 参照 (Visual Basic では Nothing) です。
UnauthorizedAccessException ディレクトリ パスが渡されたか、ファイルを異なるドライブに移動しようとしています。
PathTooLongException 指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。たとえば、Windows ベースのプラットフォームの場合、パスの長さは 248 文字未満、ファイル名の長さは 260 文字未満である必要があります。
NotSupportedException destFileName の文字列の中に、コロン (:) が含まれています。

解説

既存ファイルの上書きの許可または禁止を指定してファイルをコピーするには、このメソッドを使用します。既存のファイルの上書きを既定で禁止するには、 CopyTo(String) メソッドを使用してください。

このメソッドの使用例については、以下の「使用例」を参照してください。その他の一般的な I/O タスクまたは関連する I/O タスクの例を次の表に示します。

実行するタスク 参考例があるトピック
テキスト ファイルを作成する。 ファイルへのテキストの書き込み
テキスト ファイルに書き込む。 ファイルへのテキストの書き込み
テキスト ファイルから読み取る。 ファイルからのテキストの読み取り
テキストをファイルに追加する。 ログ ファイルのオープンと追加

File.AppendText

FileInfo.AppendText

ファイルの名前を変更、またはファイルを移動する。 File.Move

FileInfo.MoveTo

ファイルを削除する。 File.Delete

FileInfo.Delete

バイナリ ファイルから読み取る。 新しく作成したデータ ファイルの読み取りと書き込み
バイナリ ファイルに書き込む。 新しく作成したデータ ファイルの読み取りと書き込み
ディレクトリを移動する。 Directory.Move

DirectoryInfo.MoveTo

サブディレクトリを作成する。 CreateSubdirectory
ディレクトリをコピーする。 Directory

使用例

[Visual Basic, C#, C++] CopyTo メソッドの 2 種類の使用方法をオーバーロードした例を次に示します。

 
Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        'Specify the directories you want to manipulate.
        Dim path As String = "c:\temp\MyTest.txt"
        Dim path2 As String = path + "temp"
        Dim fi As FileInfo = New FileInfo(path)
        Dim fi2 As FileInfo = New FileInfo(path2)

        Try
            Dim fs As FileStream = fi.Create()
            fs.Close()
            'Ensure that the target does not exist.
            fi2.Delete()
            'Copy the file.
            fi.CopyTo(path2)
            Console.WriteLine("{0} was copied to {1}.", path, path2)
            'Try to copy it again, which should succeed.
            fi.CopyTo(path2, True)
            Console.WriteLine("The second Copy operation succeeded, which is expected.")

        Catch
            Console.WriteLine("Double copying was not allowed, which is not expected.")
        End Try
    End Sub
End Class

[C#] 
using System;
using System.IO;

class Test 
{
    
    public static void Main() 
    {
        string path = @"c:\temp\MyTest.txt";
        string path2 = @"c:\temp\MyTest.txt" + "temp";
        FileInfo fi1 = new FileInfo(path);
        FileInfo fi2 = new FileInfo(path2);

        try 
        {
            // Create the file and clean up handles.
            using (FileStream fs = fi1.Create()) {}

            //Ensure that the target does not exist.
            fi2.Delete();

            //Copy the file.
            fi1.CopyTo(path2);
            Console.WriteLine("{0} was copied to {1}.", path, path2);

            //Try to copy it again, which should succeed.
            fi1.CopyTo(path2, true);

            Console.WriteLine("The second Copy operation succeeded, which is expected.");

        } 
        catch 
        {
            Console.WriteLine("Double copying was not allowed, which is not expected.");
        }
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;

int main() {
    String* path = S"c:\\temp\\MyTest.txt";
    String* path2 = S"c:\\temp\\MyTest.txttemp";
    FileInfo* fi1 = new FileInfo(path);
    FileInfo* fi2 = new FileInfo(path2);

    try {
        // Create the file and clean up handles.
        FileStream* fs = fi1->Create();
        if (fs) __try_cast<IDisposable*>(fs)->Dispose();

        //Ensure that the target does not exist.
        fi2->Delete();

        //Copy the file.
        fi1->CopyTo(path2);
        Console::WriteLine(S"{0} was copied to {1}.", path, path2);

        //Try to copy it again, which should succeed.
        fi1->CopyTo(path2, true);

        Console::WriteLine(S"The second Copy operation succeeded, which is expected.");
    } catch (Exception*) {
        Console::WriteLine(S"Double copying was not allowed, which is not expected.");
    }
}

[Visual Basic, C#, C++] コピー先のファイルが既に存在する場合にファイルを上書きするかどうかを指定して、あるファイルを別のファイルにコピーする例を次に示します。

 
Imports System
Imports System.IO

Public Class CopyToTest
    Public Shared Sub Main()
        ' Create a reference to a file, which might or might not exist.
        ' If it does not exist, it is not yet created.
        Dim fi As New FileInfo("temp.txt")
        ' Create a writer, ready to add entries to the file.
        Dim sw As StreamWriter = fi.AppendText()
        sw.WriteLine("Add as many lines as you like...")
        sw.WriteLine("Add another line to the output...")
        sw.Flush()
        sw.Close()
        ' Get the information out of the file and display it.
        Dim sr As New StreamReader(fi.OpenRead())
        Console.WriteLine("This is the information in the first file:")
        While sr.Peek() <> -1
            Console.WriteLine(sr.ReadLine())
        End While
        ' Copy this file to another file. The true parameter specifies 
        ' that the file will be overwritten if it already exists.
        Dim newfi As FileInfo = fi.CopyTo("newTemp.txt", True)
        ' Get the information out of the new file and display it.
        sr = New StreamReader(newfi.OpenRead())
        Console.WriteLine("{0}This is the information in the second file:", Environment.NewLine)
        While sr.Peek() <> -1
            Console.WriteLine(sr.ReadLine())
        End While
    End Sub 'Main
End Class 'CopyToTest

[C#] 
using System;
using System.IO;

public class CopyToTest 
{
    public static void Main() 
    {
        // Create a reference to a file, which might or might not exist.
        // If it does not exist, it is not yet created.
        FileInfo fi = new FileInfo("temp.txt");
        // Create a writer, ready to add entries to the file.
        StreamWriter sw = fi.AppendText();
        sw.WriteLine("Add as many lines as you like...");
        sw.WriteLine("Add another line to the output...");
        sw.Flush();
        sw.Close();
        // Get the information out of the file and display it.
        StreamReader sr = new StreamReader( fi.OpenRead() );
        Console.WriteLine("This is the information in the first file:");
        while (sr.Peek() != -1)
            Console.WriteLine( sr.ReadLine() );
        // Copy this file to another file. The true parameter specifies
        // that the file will be overwritten if it already exists.
        FileInfo newfi = fi.CopyTo("newTemp.txt", true);
        // Get the information out of the new file and display it.
        sr = new StreamReader( newfi.OpenRead() );
        Console.WriteLine("{0}This is the information in the second file:", Environment.NewLine);
        while (sr.Peek() != -1)
            Console.WriteLine( sr.ReadLine() );
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;

int main() {
    // Create a reference to a file, which might or might not exist.
    // If it does not exist, it is not yet created.
    FileInfo* fi = new FileInfo(S"temp.txt");
    // Create a writer, ready to add entries to the file.
    StreamWriter* sw = fi->AppendText();
    sw->WriteLine(S"Add as many lines as you like...");
    sw->WriteLine(S"Add another line to the output...");
    sw->Flush();
    sw->Close();
    // Get the information out of the file and display it.
    StreamReader* sr = new StreamReader(fi->OpenRead());
    Console::WriteLine(S"This is the information in the first file:");
    while (sr->Peek() != -1)
        Console::WriteLine(sr->ReadLine());
    // Copy this file to another file. The true parameter specifies
    // that the file will be overwritten if it already exists.
    FileInfo* newfi = fi->CopyTo(S"newTemp.txt", true);
    // Get the information out of the new file and display it.* sr = new StreamReader( newfi->OpenRead() );
    Console::WriteLine(S"{0}This is the information in the second file:", Environment::NewLine);
    while (sr->Peek() != -1)
        Console::WriteLine(sr->ReadLine());
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

.NET Framework セキュリティ:

参照

FileInfo クラス | FileInfo メンバ | System.IO 名前空間 | FileInfo.CopyTo オーバーロードの一覧 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み | 基本のファイル I/O | 新しく作成したデータ ファイルの読み取りと書き込み