File.Move 메서드

정의

오버로드

Move(String, String)

지정된 파일을 새 위치로 이동하고 새 파일의 이름을 지정할 수 있는 옵션을 제공합니다.Moves a specified file to a new location, providing the option to specify a new file name.

Move(String, String, Boolean)

새 파일 이름을 지정하고 대상 파일이 이미 있으면 덮어쓰는 옵션을 제공하여, 지정된 파일을 새 위치로 이동합니다.Moves a specified file to a new location, providing the options to specify a new file name and to overwrite the destination file if it already exists.

Move(String, String)

지정된 파일을 새 위치로 이동하고 새 파일의 이름을 지정할 수 있는 옵션을 제공합니다.Moves a specified file to a new location, providing the option to specify a new file name.

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

매개 변수

sourceFileName
String

이동할 파일의 이름입니다.The name of the file to move. 상대 또는 절대 경로가 포함될 수 있습니다.Can include a relative or absolute path.

destFileName
String

파일에 대한 새 경로 및 이름입니다.The new path and name for the file.

예외

destFileName가 이미 있는 경우destFileName already exists.

또는-or-

I/o 오류가 발생 한 경우 (예: 디스크 볼륨에서 파일을 복사 하는 동안)An I/O error has occurred, e.g. while copying the file across disk volumes.

sourceFileName을 찾을 수 없습니다.sourceFileName was not found.

sourceFileName 또는 destFileNamenull인 경우sourceFileName or destFileName is null.

sourceFileName 또는 destFileName이 빈 문자열이거나 공백만을 포함하거나 InvalidPathChars에 정의된 잘못된 문자를 포함합니다.sourceFileName or destFileName is a zero-length string, contains only white space, or contains invalid characters as defined in InvalidPathChars.

호출자에게 필요한 권한이 없는 경우The caller does not have the required permission.

지정된 경로, 파일 이름 또는 둘 다가 시스템에서 정의한 최대 길이를 초과합니다.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 또는 destFileName의 형식이 잘못되었습니다.sourceFileName or destFileName is in an invalid format.

예제

다음 예에서는 파일을 이동 합니다.The following example moves a file.

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   String^ path2 = "c:\\temp2\\MyTest.txt";
   try
   {
      if (  !File::Exists( path ) )
      {
         
         // This statement ensures that the file is created,
         // but the handle is not kept.
         FileStream^ fs = File::Create( path );
         if ( fs )
                  delete (IDisposable^)fs;
      }
      
      // Ensure that the target does not exist.
      if ( File::Exists( path2 ) )
            File::Delete( path2 );
      
      // Move the file.
      File::Move( path, path2 );
      Console::WriteLine( "{0} was moved to {1}.", path, path2 );
      
      // See if the original exists now.
      if ( File::Exists( path ) )
      {
         Console::WriteLine( "The original file still exists, which is unexpected." );
      }
      else
      {
         Console::WriteLine( "The original file no longer exists, which is expected." );
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}
using System;
using System.IO;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        string path2 = @"c:\temp2\MyTest.txt";
        try
        {
            if (!File.Exists(path))
            {
                // This statement ensures that the file is created,
                // but the handle is not kept.
                using (FileStream fs = File.Create(path)) {}
            }

            // Ensure that the target does not exist.
            if (File.Exists(path2))	
            File.Delete(path2);

            // Move the file.
            File.Move(path, path2);
            Console.WriteLine("{0} was moved to {1}.", path, path2);

            // See if the original exists now.
            if (File.Exists(path))
            {
                Console.WriteLine("The original file still exists, which is unexpected.");
            }
            else
            {
                Console.WriteLine("The original file no longer exists, which is expected.");
            }			
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim path2 As String = "c:\temp2\MyTest.txt"

        Try
            If File.Exists(path) = False Then
                ' This statement ensures that the file is created,
                ' but the handle is not kept.
                Dim fs As FileStream = File.Create(path)
                fs.Close()
            End If

            ' Ensure that the target does not exist.
            If File.Exists(path2) Then
                File.Delete(path2)
            End If

            ' Move the file.
            File.Move(path, path2)
            Console.WriteLine("{0} moved to {1}", path, path2)

            ' See if the original file exists now.
            If File.Exists(path) Then
                Console.WriteLine("The original file still exists, which is unexpected.")
            Else
                Console.WriteLine("The original file no longer exists, which is expected.")
            End If
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

설명

이 메서드는 디스크 볼륨에서 작동 하며 소스와 대상이 동일한 경우 예외를 throw 하지 않습니다.This method works across disk volumes, and it does not throw an exception if the source and destination are the same.

같은 이름의 파일을 해당 디렉터리로 이동 하 여 파일을 바꾸려고 시도 하면 IOException 이 throw 됩니다.Note that if you attempt to replace a file by moving a file of the same name into that directory, an IOException is thrown. 이 문제를 방지 하려면 다음을 수행 합니다.To avoid this problem:

  • .NET Core 3.0 이상 버전에서는 매개 변수를로 설정 하 여를 호출할 수 있습니다 Move(String, String, Boolean) overwrite true . 그러면 파일이 있는 경우이 파일을 대체 합니다.In .NET Core 3.0 and later versions, you can call Move(String, String, Boolean) setting the parameter overwrite to true, which will replace the file if it exists.

  • 모든 .NET 버전에서를 호출 하 여 Copy(String, String, Boolean) overwrite로 복사 하 고를 호출 Delete 하 여 초과 된 소스 파일을 제거할 수 있습니다.In all .NET versions, you can call Copy(String, String, Boolean) to copy with overwrite, then call Delete to remove the excess source file. 이 전략은 복사 중인 파일이 작고 "원자성" 파일 작업을 찾고 있는 경우에 권장 됩니다.This strategy is advisable if the file being copied is small, and you are looking for an "atomic" file operation. Delete파일이 먼저 발생 하 고 시스템 또는 프로그램이 충돌 하는 경우 대상 파일이 더 이상 존재 하지 않게 됩니다.If you Delete the file first, and the system or program crashes, the destination file will no longer exist.

  • 모든 .NET 버전에서를 호출 하기 전에를 호출 하면 Delete(String) Move 파일이 있는 경우에만 삭제 됩니다.In all .NET versions, you can call Delete(String) before calling Move, which will only delete the file if it exists.

sourceFileNamedestFileName 인수는 상대 또는 절대 경로 정보를 포함할 수 있습니다.The sourceFileName and destFileName arguments can include relative or absolute path information. 상대 경로 정보는 현재 작업 디렉터리에 상대적으로 해석 됩니다.Relative path information is interpreted as relative to the current working directory. 현재 작업 디렉터리를 가져오려면를 참조 하십시오 GetCurrentDirectory .To obtain the current working directory, see GetCurrentDirectory.

디스크 볼륨에서 파일을 이동 하는 것은 복사에 성공한 경우 파일을 복사 하 고 원본에서 삭제 하는 것과 같습니다.Moving the file across disk volumes is equivalent to copying the file and deleting it from the source if the copying was successful.

디스크 볼륨에서 파일을 이동 하려고 하는데 해당 파일이 사용 중인 경우 파일은 대상에 복사 되지만 원본에서 삭제 되지는 않습니다.If you try to move a file across disk volumes and that file is in use, the file is copied to the destination, but it is not deleted from the source.

일반적인 i/o 작업 목록은 일반적인 I/o 작업을 참조 하세요.For a list of common I/O tasks, see Common I/O Tasks.

적용 대상

Move(String, String, Boolean)

새 파일 이름을 지정하고 대상 파일이 이미 있으면 덮어쓰는 옵션을 제공하여, 지정된 파일을 새 위치로 이동합니다.Moves a specified file to a new location, providing the options to specify a new file name and to overwrite the destination file if it already exists.

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

매개 변수

sourceFileName
String

이동할 파일의 이름입니다.The name of the file to move. 상대 또는 절대 경로가 포함될 수 있습니다.Can include a relative or absolute path.

destFileName
String

파일에 대한 새 경로 및 이름입니다.The new path and name for the file.

overwrite
Boolean

대상 파일이 이미 있는 경우 덮어쓰려면 true로 설정하고, 그렇지 않으면 false로 설정합니다.true to overwrite the destination file if it already exists; false otherwise.

예외

destFileName 이 이미 있고 overwritefalse입니다.destFileName already exists and overwrite is false.

또는-or-

I/o 오류가 발생 한 경우 (예: 디스크 볼륨에서 파일을 복사 하는 동안)An I/O error has occurred, e.g. while copying the file across disk volumes.

sourceFileName을 찾을 수 없습니다.sourceFileName was not found.

sourceFileName 또는 destFileNamenull인 경우sourceFileName or destFileName is null.

sourceFileName 또는 destFileName이 빈 문자열이거나 공백만을 포함하거나 InvalidPathChars에 정의된 잘못된 문자를 포함합니다.sourceFileName or destFileName is a zero-length string, contains only white space, or contains invalid characters as defined in InvalidPathChars.

호출자에게 필요한 권한이 없는 경우The caller does not have the required permission.

지정된 경로, 파일 이름 또는 둘 다가 시스템에서 정의한 최대 길이를 초과합니다.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 또는 destFileName의 형식이 잘못되었습니다.sourceFileName or destFileName is in an invalid format.

예제

다음 예에서는 파일을 이동 합니다.The following example moves a file.

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   String^ path2 = "c:\\temp2\\MyTest.txt";
   try
   {
      if (  !File::Exists( path ) )
      {
         
         // This statement ensures that the file is created,
         // but the handle is not kept.
         FileStream^ fs = File::Create( path );
         if ( fs )
                  delete (IDisposable^)fs;
      }
      
      // Ensure that the target does not exist.
      if ( File::Exists( path2 ) )
            File::Delete( path2 );
      
      // Move the file.
      File::Move( path, path2 );
      Console::WriteLine( "{0} was moved to {1}.", path, path2 );
      
      // See if the original exists now.
      if ( File::Exists( path ) )
      {
         Console::WriteLine( "The original file still exists, which is unexpected." );
      }
      else
      {
         Console::WriteLine( "The original file no longer exists, which is expected." );
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}
using System;
using System.IO;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        string path2 = @"c:\temp2\MyTest.txt";
        try
        {
            if (!File.Exists(path))
            {
                // This statement ensures that the file is created,
                // but the handle is not kept.
                using (FileStream fs = File.Create(path)) {}
            }

            // Ensure that the target does not exist.
            if (File.Exists(path2))	
            File.Delete(path2);

            // Move the file.
            File.Move(path, path2);
            Console.WriteLine("{0} was moved to {1}.", path, path2);

            // See if the original exists now.
            if (File.Exists(path))
            {
                Console.WriteLine("The original file still exists, which is unexpected.");
            }
            else
            {
                Console.WriteLine("The original file no longer exists, which is expected.");
            }			
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
Imports System.IO
Imports System.Text

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim path2 As String = "c:\temp2\MyTest.txt"

        Try
            If File.Exists(path) = False Then
                ' This statement ensures that the file is created,
                ' but the handle is not kept.
                Dim fs As FileStream = File.Create(path)
                fs.Close()
            End If

            ' Ensure that the target does not exist.
            If File.Exists(path2) Then
                File.Delete(path2)
            End If

            ' Move the file.
            File.Move(path, path2)
            Console.WriteLine("{0} moved to {1}", path, path2)

            ' See if the original file exists now.
            If File.Exists(path) Then
                Console.WriteLine("The original file still exists, which is unexpected.")
            Else
                Console.WriteLine("The original file no longer exists, which is expected.")
            End If
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

설명

이 메서드는 디스크 볼륨에서 작동 하며 소스와 대상이 동일한 경우 예외를 throw 하지 않습니다.This method works across disk volumes, and it does not throw an exception if the source and destination are the same.

sourceFileNamedestFileName 인수는 상대 또는 절대 경로 정보를 포함할 수 있습니다.The sourceFileName and destFileName arguments can include relative or absolute path information. 상대 경로 정보는 현재 작업 디렉터리에 상대적으로 해석 됩니다.Relative path information is interpreted as relative to the current working directory. 현재 작업 디렉터리를 가져오려면를 참조 하십시오 GetCurrentDirectory .To obtain the current working directory, see GetCurrentDirectory.

디스크 볼륨에서 파일을 이동 하는 것은 복사에 성공한 경우 파일을 복사 하 고 원본에서 삭제 하는 것과 같습니다.Moving the file across disk volumes is equivalent to copying the file and deleting it from the source if the copying was successful.

디스크 볼륨에서 파일을 이동 하려고 하는데 해당 파일이 사용 중인 경우 파일은 대상에 복사 되지만 원본에서 삭제 되지는 않습니다.If you try to move a file across disk volumes and that file is in use, the file is copied to the destination, but it is not deleted from the source.

일반적인 i/o 작업 목록은 일반적인 I/o 작업을 참조 하세요.For a list of common I/O tasks, see Common I/O Tasks.

적용 대상