다음을 통해 공유


File.Copy 메서드

정의

기존 파일을 새 파일에 복사합니다.

오버로드

Copy(String, String)

기존 파일을 새 파일에 복사합니다. 같은 이름의 파일을 덮어쓸 수 없습니다.

Copy(String, String, Boolean)

기존 파일을 새 파일에 복사합니다. 동일한 이름의 파일을 덮어쓸 수 있습니다.

Copy(String, String)

Source:
File.cs
Source:
File.cs
Source:
File.cs

기존 파일을 새 파일에 복사합니다. 같은 이름의 파일을 덮어쓸 수 없습니다.

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

복사할 파일입니다.

destFileName
String

대상 파일의 이름입니다. 디렉터리 또는 기존 파일일 수 없습니다.

예외

호출자에게 필요한 권한이 없습니다.

sourceFileName 또는 destFileName 길이가 0인 문자열이거나 공백만 포함하거나 하나 이상의 잘못된 문자를 포함합니다. GetInvalidPathChars() 메서드를 사용하여 잘못된 문자를 쿼리할 수 있습니다.

-또는-

sourceFileName 또는 destFileName 디렉터리를 지정합니다.

sourceFileName 또는 destFileNamenull.

지정된 경로, 파일 이름 또는 둘 다 시스템 정의 최대 길이를 초과합니다.

sourceFileName 또는 destFileName 지정된 경로가 잘못되었습니다(예: 매핑되지 않은 드라이브에 있는 경우).

sourceFileName 찾을 수 없습니다.

destFileName 존재합니다.

-또는-

I/O 오류가 발생했습니다.

sourceFileName 또는 destFileName 잘못된 형식입니다.

예제

다음 예제에서는 C:\archives\2008 백업 폴더에 파일을 복사합니다. 다음과 같이 Copy 메서드의 두 오버로드를 사용합니다.

  • 먼저 File.Copy(String, String) 메서드 오버로드를 사용하여 텍스트(.txt) 파일을 복사합니다. 이 코드는 이 오버로드가 이미 복사된 파일을 덮어쓰는 것을 허용하지 않음을 보여 줍니다.

  • 그런 다음 File.Copy(String, String, Boolean) 메서드 오버로드를 사용하여 그림(파일.jpg)을 복사합니다. 이 코드는 이 오버로드가 이미 복사된 파일을 덮어쓸 수 있음을 보여 줍니다.

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);
}
let sourceDir = @"c:\current"
let backupDir = @"c:\archives\2008"

try
    let picList = Directory.GetFiles(sourceDir, "*.jpg")
    let txtList = Directory.GetFiles(sourceDir, "*.txt")

    // Copy picture files.
    for f in picList do
        // Remove path from the file name.
        let 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.
    for f in txtList do
        // Remove path from the file name.
        let 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.
        with
        | :? IOException as copyError -> printfn $"{copyError.Message}"

    // Delete source files that were copied.
    for f in txtList do
        File.Delete f

    for f in picList do
        File.Delete f

// Catch exception if the file was already copied.
with
| :? DirectoryNotFoundException as dirNotFound -> printfn $"{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) 메서드 오버로드와 동일합니다.

sourceFileNamedestFileName 매개 변수는 상대 또는 절대 경로 정보를 지정할 수 있습니다. 상대 경로 정보는 현재 작업 디렉터리를 기준으로 해석됩니다. 현재 작업 디렉터리를 가져오려면 Directory.GetCurrentDirectory 메서드를 참조하세요. 이 메서드는 매개 변수의 와일드카드 문자를 지원하지 않습니다.

원본 파일의 특성은 복사된 파일에 유지됩니다.

추가 정보

적용 대상

Copy(String, String, Boolean)

Source:
File.cs
Source:
File.cs
Source:
File.cs

기존 파일을 새 파일에 복사합니다. 동일한 이름의 파일을 덮어쓸 수 있습니다.

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

복사할 파일입니다.

destFileName
String

대상 파일의 이름입니다. 디렉터리가 될 수 없습니다.

overwrite
Boolean

대상 파일이 이미 있는 경우 대체해야 하는지 true. 그렇지 않으면 false.

예외

호출자에게 필요한 권한이 없습니다.

-또는-

destFileName 읽기 전용입니다.

-또는-

overwrite true destFileName 존재하고 숨겨지지만 sourceFileName 숨겨지지는 않습니다.

sourceFileName 또는 destFileName 길이가 0인 문자열이거나 공백만 포함하거나 하나 이상의 잘못된 문자를 포함합니다. GetInvalidPathChars() 메서드를 사용하여 잘못된 문자를 쿼리할 수 있습니다.

-또는-

sourceFileName 또는 destFileName 디렉터리를 지정합니다.

sourceFileName 또는 destFileNamenull.

지정된 경로, 파일 이름 또는 둘 다 시스템 정의 최대 길이를 초과합니다.

sourceFileName 또는 destFileName 지정된 경로가 잘못되었습니다(예: 매핑되지 않은 드라이브에 있는 경우).

sourceFileName 찾을 수 없습니다.

destFileName 존재하고 overwritefalse.

-또는-

I/O 오류가 발생했습니다.

sourceFileName 또는 destFileName 잘못된 형식입니다.

예제

다음 예제에서는 C:\archives\2008 백업 폴더에 파일을 복사합니다. 다음과 같이 Copy 메서드의 두 오버로드를 사용합니다.

  • 먼저 File.Copy(String, String) 메서드 오버로드를 사용하여 텍스트(.txt) 파일을 복사합니다. 이 코드는 이 오버로드가 이미 복사된 파일을 덮어쓰는 것을 허용하지 않음을 보여 줍니다.

그런 다음 File.Copy(String, String, Boolean) 메서드 오버로드를 사용하여 그림(파일.jpg)을 복사합니다. 이 코드는 이 오버로드가 이미 복사된 파일을 덮어쓸 수 있음을 보여 줍니다.

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);
}
let sourceDir = @"c:\current"
let backupDir = @"c:\archives\2008"

try
    let picList = Directory.GetFiles(sourceDir, "*.jpg")
    let txtList = Directory.GetFiles(sourceDir, "*.txt")

    // Copy picture files.
    for f in picList do
        // Remove path from the file name.
        let 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.
    for f in txtList do
        // Remove path from the file name.
        let 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.
        with
        | :? IOException as copyError -> printfn $"{copyError.Message}"

    // Delete source files that were copied.
    for f in txtList do
        File.Delete f

    for f in picList do
        File.Delete f

// Catch exception if the file was already copied.
with
| :? DirectoryNotFoundException as dirNotFound -> printfn $"{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 매개 변수는 상대 또는 절대 경로 정보를 지정할 수 있습니다. 상대 경로 정보는 현재 작업 디렉터리를 기준으로 해석됩니다. 이 메서드는 매개 변수의 와일드카드 문자를 지원하지 않습니다.

원본 파일의 특성은 복사된 파일에 유지됩니다.

일반적인 I/O 작업 목록은 일반적인 I/O 작업참조하세요.

추가 정보

적용 대상