File.Copy メソッド

定義

既存のファイルを新しいファイルにコピーします。Copies an existing file to a new file.

オーバーロード

Copy(String, String)

既存のファイルを新しいファイルにコピーします。Copies an existing file to a new file. 同じ名前のファイルを上書きできません。Overwriting a file of the same name is not allowed.

Copy(String, String, Boolean)

既存のファイルを新しいファイルにコピーします。Copies an existing file to a new file. 同じ名前のファイルの上書きが許可されます。Overwriting a file of the same name is allowed.

Copy(String, String)

既存のファイルを新しいファイルにコピーします。Copies an existing file to a new file. 同じ名前のファイルを上書きできません。Overwriting a file of the same name is not allowed.

public:
 static void Copy(System::String ^ sourceFileName, System::String ^ destFileName);
public static void Copy (string sourceFileName, string destFileName);
static member Copy : string * string -> unit
Public Shared Sub Copy (sourceFileName As String, destFileName As String)

パラメーター

sourceFileName
String

コピーするファイル。The file to copy.

destFileName
String

コピー先ファイルの名前。The name of the destination file. ディレクトリや既存のファイルは使用できません。This cannot be a directory or an existing file.

例外

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

sourceFileName または destFileName が、長さ 0 の文字列であるか、空白のみで構成されるか、または InvalidPathChars で定義されている 1 つ以上の正しくない文字を含んでいます。sourceFileName or destFileName is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.

- または --or- sourceFileName または destFileName がディレクトリを指定しています。sourceFileName or destFileName specifies a directory.

sourceFileName または destFileNamenull です。sourceFileName or destFileName is null.

指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。The specified path, file name, or both exceed the system-defined maximum length.

sourceFileName または destFileName で指定されたパスが正しくありません (マップされていないドライブ上のパスなど)。The path specified in sourceFileName or destFileName is invalid (for example, it is on an unmapped drive).

sourceFileName が見つかりませんでした。sourceFileName was not found.

destFileName が存在しています。destFileName exists.

- または --or- I/O エラーが発生しました。An I/O error has occurred.

sourceFileName または destFileName の形式が正しくありません。sourceFileName or destFileName is in an invalid format.

次の例では、C:\archives\2008 backup フォルダーにファイルをコピーします。The following example copies files to the C:\archives\2008 backup folder. 次のように、Copy メソッドの2つのオーバーロードを使用します。It uses the two overloads of the Copy method as follows:

  • まず、File.Copy(String, String) メソッドのオーバーロードを使用して、テキスト (.txt) ファイルをコピーします。It first uses the File.Copy(String, String) method overload to copy text (.txt) files. このコードは、既にコピーされたファイルの上書きをこのオーバーロードで許可しないことを示しています。The code demonstrates that this overload does not allow overwriting files that were already copied.

  • 次に、File.Copy(String, String, Boolean) メソッドオーバーロードを使用して、画像 (.jpg ファイル) をコピーします。It then uses the File.Copy(String, String, Boolean) method overload to copy pictures (.jpg files). このコードは、既にコピーされたファイルの上書きをこのオーバーロードで許可することを示しています。The code demonstrates that this overload does allow overwriting files that were already copied.

string sourceDir = @"c:\current";
string backupDir = @"c:\archives\2008";

try
{
    string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
    string[] txtList = Directory.GetFiles(sourceDir, "*.txt");

    // Copy picture files.
    foreach (string f in picList)
    {
        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
    }

    // Copy text files.
    foreach (string f in txtList)
    {

        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        try
        {
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
        }

        // Catch exception if the file was already copied.
        catch (IOException copyError)
        {
            Console.WriteLine(copyError.Message);
        }
    }

    // Delete source files that were copied.
    foreach (string f in txtList)
    {
        File.Delete(f);
    }
    foreach (string f in picList)
    {
        File.Delete(f);
    }
}

catch (DirectoryNotFoundException dirNotFound)
{
    Console.WriteLine(dirNotFound.Message);
}

Dim sourceDir As String = "c:\current"
Dim backupDir As String = "c:\archives\2008"

Try
    Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg")
    Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

    ' Copy picture files.
    For Each f As String In picList
        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        ' Use the Path.Combine method to safely append the file name to the path.
        ' Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), True)
    Next

    ' Copy text files.
    For Each f As String In txtList

        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        Try
            ' Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

            ' Catch exception if the file was already copied.
        Catch copyError As IOException
            Console.WriteLine(copyError.Message)
        End Try
    Next

    For Each f As String In txtList
        File.Delete(f)
    Next

    For Each f As String In picList
        File.Delete(f)
    Next

Catch dirNotFound As DirectoryNotFoundException
    Console.WriteLine(dirNotFound.Message)
End Try

注釈

このメソッドは、overwrite パラメーターが falseに設定された Copy(String, String, Boolean) メソッドのオーバーロードに相当します。This method is equivalent to the Copy(String, String, Boolean) method overload with the overwrite parameter set to false.

sourceFileName パラメーターと destFileName パラメーターでは、相対パスまたは絶対パス情報を指定できます。The sourceFileName and destFileName parameters can specify relative or absolute path information. 相対パス情報は、現在の作業ディレクトリを基準として解釈されます。Relative path information is interpreted as relative to the current working directory. 現在の作業ディレクトリを取得するには、Directory.GetCurrentDirectory メソッドを参照してください。To obtain the current working directory, see the Directory.GetCurrentDirectory method. このメソッドは、パラメーターでワイルドカード文字をサポートしていません。This method does not support wildcard characters in the parameters.

元のファイルの属性は、コピーしたファイルに保持されます。The attributes of the original file are retained in the copied file.

セキュリティ

FileIOPermission
sourceFileName から読み取り、destFileNameへの書き込みを行う場合。for reading from sourceFileName and writing to destFileName. 関連付けられた列挙型: ReadWriteAssociated enumerations: Read, Write

こちらもご覧ください

Copy(String, String, Boolean)

既存のファイルを新しいファイルにコピーします。Copies an existing file to a new file. 同じ名前のファイルの上書きが許可されます。Overwriting a file of the same name is allowed.

public:
 static void Copy(System::String ^ sourceFileName, System::String ^ destFileName, bool overwrite);
public static void Copy (string sourceFileName, string destFileName, bool overwrite);
static member Copy : string * string * bool -> unit
Public Shared Sub Copy (sourceFileName As String, destFileName As String, overwrite As Boolean)

パラメーター

sourceFileName
String

コピーするファイル。The file to copy.

destFileName
String

コピー先ファイルの名前。The name of the destination file. このパラメーターには、ディレクトリは指定できません。This cannot be a directory.

overwrite
Boolean

コピー先ファイルが上書きできる場合は true。それ以外の場合は falsetrue if the destination file can be overwritten; otherwise, false.

例外

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

- または --or- destFileName は読み取り専用です。destFileName is read-only.

- または --or- overwritetrue です。destFileName は存在するのに非表示ですが、sourceFileName は非表示になっていません。overwrite is true, destFileName exists and is hidden, but sourceFileName is not hidden.

sourceFileName または destFileName が、長さ 0 の文字列であるか、空白のみで構成されるか、または InvalidPathChars で定義されている使用できない文字を含んでいます。sourceFileName or destFileName is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.

- または --or- sourceFileName または destFileName がディレクトリを指定しています。sourceFileName or destFileName specifies a directory.

sourceFileName または destFileNamenull です。sourceFileName or destFileName is null.

指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。The specified path, file name, or both exceed the system-defined maximum length.

sourceFileName または destFileName で指定されたパスが正しくありません (マップされていないドライブ上のパスなど)。The path specified in sourceFileName or destFileName is invalid (for example, it is on an unmapped drive).

sourceFileName が見つかりませんでした。sourceFileName was not found.

destFileName が存在しており、overwritefalse です。destFileName exists and overwrite is false.

- または --or- I/O エラーが発生しました。An I/O error has occurred.

sourceFileName または destFileName の形式が正しくありません。sourceFileName or destFileName is in an invalid format.

次の例では、C:\archives\2008 backup フォルダーにファイルをコピーします。The following example copies files to the C:\archives\2008 backup folder. 次のように、Copy メソッドの2つのオーバーロードを使用します。It uses the two overloads of the Copy method as follows:

  • まず、File.Copy(String, String) メソッドのオーバーロードを使用して、テキスト (.txt) ファイルをコピーします。It first uses the File.Copy(String, String) method overload to copy text (.txt) files. このコードは、既にコピーされたファイルの上書きをこのオーバーロードで許可しないことを示しています。The code demonstrates that this overload does not allow overwriting files that were already copied.

次に、File.Copy(String, String, Boolean) メソッドオーバーロードを使用して、画像 (.jpg ファイル) をコピーします。It then uses the File.Copy(String, String, Boolean) method overload to copy pictures (.jpg files). このコードは、既にコピーされたファイルの上書きをこのオーバーロードで許可することを示しています。The code demonstrates that this overload does allow overwriting files that were already copied.

string sourceDir = @"c:\current";
string backupDir = @"c:\archives\2008";

try
{
    string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
    string[] txtList = Directory.GetFiles(sourceDir, "*.txt");

    // Copy picture files.
    foreach (string f in picList)
    {
        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
    }

    // Copy text files.
    foreach (string f in txtList)
    {

        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        try
        {
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
        }

        // Catch exception if the file was already copied.
        catch (IOException copyError)
        {
            Console.WriteLine(copyError.Message);
        }
    }

    // Delete source files that were copied.
    foreach (string f in txtList)
    {
        File.Delete(f);
    }
    foreach (string f in picList)
    {
        File.Delete(f);
    }
}

catch (DirectoryNotFoundException dirNotFound)
{
    Console.WriteLine(dirNotFound.Message);
}

Dim sourceDir As String = "c:\current"
Dim backupDir As String = "c:\archives\2008"

Try
    Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg")
    Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

    ' Copy picture files.
    For Each f As String In picList
        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        ' Use the Path.Combine method to safely append the file name to the path.
        ' Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), True)
    Next

    ' Copy text files.
    For Each f As String In txtList

        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        Try
            ' Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

            ' Catch exception if the file was already copied.
        Catch copyError As IOException
            Console.WriteLine(copyError.Message)
        End Try
    Next

    For Each f As String In txtList
        File.Delete(f)
    Next

    For Each f As String In picList
        File.Delete(f)
    Next

Catch dirNotFound As DirectoryNotFoundException
    Console.WriteLine(dirNotFound.Message)
End Try

注釈

sourceFileName パラメーターと destFileName パラメーターでは、相対パスまたは絶対パス情報を指定できます。The sourceFileName and destFileName parameters can specify relative or absolute path information. 相対パス情報は、現在の作業ディレクトリを基準として解釈されます。Relative path information is interpreted as relative to the current working directory. このメソッドは、パラメーターでワイルドカード文字をサポートしていません。This method does not support wildcard characters in the parameters.

元のファイルの属性は、コピーしたファイルに保持されます。The attributes of the original file are retained in the copied file.

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。For a list of common I/O tasks, see Common I/O Tasks.

セキュリティ

FileIOPermission
sourceFileName から読み取り、destFileNameへの書き込みを行う場合。for reading from sourceFileName and writing to destFileName. 関連付けられた列挙型: ReadWriteAssociated enumerations: Read, Write

こちらもご覧ください

適用対象