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이 빈 문자열이거나 공백만 포함하거나 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이 있습니다.destFileName exists.

-또는--or- I/O 오류가 발생했습니다.An I/O error has occurred.

sourceFileName 또는 destFileName의 형식이 잘못되었습니다.sourceFileName or destFileName is in an invalid format.

예제

다음 예제에서는 파일 C:\archives\2008 백업 폴더에 복사합니다.The following example copies files to the C:\archives\2008 backup folder. 다음과 같이 Copy 메서드의 두 오버 로드를 사용 합니다.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

설명

이 메서드는 false로 설정 된 overwrite 매개 변수를 사용 하는 Copy(String, String, Boolean) 메서드 오버 로드와 동일 합니다.This method is equivalent to the Copy(String, String, Boolean) method overload with the overwrite parameter set to false.

sourceFileNamedestFileName 매개 변수는 상대 경로나 절대 경로 정보를 지정할 수 있습니다.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. 연관 된 열거형: Read, WriteAssociated 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이고, 그렇지 않으면 false입니다.true 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이 빈 문자열이거나 공백만 포함하거나 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이(가) 있으며 overwrite이(가) false입니다.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 백업 폴더에 복사합니다.The following example copies files to the C:\archives\2008 backup folder. 다음과 같이 Copy 메서드의 두 오버 로드를 사용 합니다.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

설명

sourceFileNamedestFileName 매개 변수는 상대 경로나 절대 경로 정보를 지정할 수 있습니다.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. 연관 된 열거형: Read, WriteAssociated enumerations: Read, Write

추가 정보

적용 대상