File.Move 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
오버로드
Move(String, String) |
지정된 파일을 새 위치로 이동하고 새 파일의 이름을 지정할 수 있는 옵션을 제공합니다. |
Move(String, String, Boolean) |
지정된 파일을 새 위치로 이동하여 새 파일 이름을 지정하고 이미 있는 경우 대상 파일을 바꿀 수 있는 옵션을 제공합니다. |
Move(String, String)
- Source:
- File.cs
- Source:
- File.cs
- Source:
- File.cs
지정된 파일을 새 위치로 이동하고 새 파일의 이름을 지정할 수 있는 옵션을 제공합니다.
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
이동할 파일의 이름입니다. 상대 또는 절대 경로가 포함될 수 있습니다.
- destFileName
- String
파일에 대한 새 경로 및 이름입니다.
예외
sourceFileName
을 찾을 수 없습니다.
sourceFileName
또는 destFileName
가 null
인 경우
2.1보다 오래된 .NET Framework 및 .NET Core 버전: sourceFileName
또는 destFileName
가 길이가 0인 문자열이거나, 공백만 포함하거나, 잘못된 문자를 포함합니다. GetInvalidPathChars() 메서드를 사용하여 잘못된 문자를 쿼리할 수 있습니다.
호출자에게 필요한 권한이 없는 경우
지정된 경로, 파일 이름 또는 둘 다가 시스템에서 정의한 최대 길이를 초과합니다.
sourceFileName
또는 destFileName
에 지정된 경로가 잘못되었습니다(예: 매핑되지 않은 드라이브에 있음).
sourceFileName
또는 destFileName
의 형식이 잘못되었습니다.
예제
다음 예제에서는 파일을 이동합니다.
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());
}
}
}
open System.IO
let path = @"c:\temp\MyTest.txt"
let path2 = @"c:\temp2\MyTest.txt"
if File.Exists path |> not then
// This statement ensures that the file is created,
// but the handle is not kept.
use _ = File.Create path
()
// Ensure that the target does not exist.
if File.Exists path2 then
File.Delete path2
// Move the file.
File.Move(path, path2)
printfn $"{path} was moved to {path2}."
// See if the original exists now.
if File.Exists path then
printfn "The original file still exists, which is unexpected."
else
printfn "The original file no longer exists, which is expected."
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하지 않습니다.
같은 이름의 파일을 해당 디렉터리로 이동하여 파일을 바꾸려고 하면 이 IOException throw됩니다. 이 문제를 방지하려면 다음을 수행해야 합니다.
.NET Core 3.0 이상 버전에서는 매개 변수
overwrite
설정을 로 호출 Move(String, String, Boolean) 할true
수 있습니다. 그러면 파일이 있는 경우 해당 파일이 바뀝니다.모든 .NET 버전에서 를 호출 Copy(String, String, Boolean) 하여 덮어쓰기를 사용하여 복사한 다음 를 호출
Delete
하여 초과 원본 파일을 제거할 수 있습니다. 복사되는 파일이 작고 "원자성" 파일 작업을 찾고 있는 경우 이 전략을 사용하는 것이 좋습니다.Delete
파일을 먼저 사용하고 시스템 또는 프로그램이 충돌하는 경우 대상 파일이 더 이상 존재하지 않습니다.모든 .NET 버전에서는 를 호출하기 전에 를 호출 Delete(String)
Move
할 수 있습니다. 이 호출은 파일이 있는 경우에만 삭제됩니다.
및 destFileName
인수에는 sourceFileName
상대 또는 절대 경로 정보가 포함될 수 있습니다. 상대 경로 정보는 현재 작업 디렉터리를 기준으로 해석됩니다. 현재 작업 디렉터리를 가져오려면 를 참조하세요 GetCurrentDirectory.
디스크 볼륨 간에 파일을 이동하는 것은 파일을 복사하고 복사에 성공한 경우 원본에서 삭제하는 것과 같습니다.
디스크 볼륨 간에 파일을 이동하려고 하고 해당 파일이 사용 중인 경우 파일이 대상으로 복사되지만 원본에서 삭제되지는 않습니다.
일반적인 I/O 작업 목록은 일반적인 I/O 작업을 참조하세요.
추가 정보
적용 대상
Move(String, String, Boolean)
- Source:
- File.cs
- Source:
- File.cs
- Source:
- File.cs
지정된 파일을 새 위치로 이동하여 새 파일 이름을 지정하고 이미 있는 경우 대상 파일을 바꿀 수 있는 옵션을 제공합니다.
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
이동할 파일의 이름입니다. 상대 또는 절대 경로가 포함될 수 있습니다.
- destFileName
- String
파일에 대한 새 경로 및 이름입니다.
- overwrite
- Boolean
true
대상 파일이 이미 있는 경우 를 바꿉니다. false
그렇지 않으면.
예외
destFileName
이 이미 있고 overwrite
는 false
입니다.
또는
예를 들어 디스크 볼륨에서 파일을 복사하는 동안 I/O 오류가 발생했습니다.
sourceFileName
을 찾을 수 없습니다.
sourceFileName
또는 destFileName
가 null
인 경우
2.1보다 오래된 .NET Framework 및 .NET Core 버전: sourceFileName
또는 destFileName
가 길이가 0인 문자열이거나, 공백만 포함하거나, 잘못된 문자를 포함합니다. GetInvalidPathChars() 메서드를 사용하여 잘못된 문자를 쿼리할 수 있습니다.
지정된 경로, 파일 이름 또는 둘 다가 시스템에서 정의한 최대 길이를 초과합니다.
sourceFileName
또는 destFileName
에 지정된 경로가 잘못되었습니다(예: 매핑되지 않은 드라이브에 있음).
sourceFileName
또는 destFileName
의 형식이 잘못되었습니다.
예제
다음 예제에서는 파일을 이동합니다.
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());
}
}
}
open System.IO
let path = @"c:\temp\MyTest.txt"
let path2 = @"c:\temp2\MyTest.txt"
if File.Exists path |> not then
// This statement ensures that the file is created,
// but the handle is not kept.
use _ = File.Create path
()
// Ensure that the target does not exist.
if File.Exists path2 then
File.Delete path2
// Move the file.
File.Move(path, path2)
printfn $"{path} was moved to {path2}."
// See if the original exists now.
if File.Exists path then
printfn "The original file still exists, which is unexpected."
else
printfn "The original file no longer exists, which is expected."
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하지 않습니다.
및 destFileName
인수에는 sourceFileName
상대 또는 절대 경로 정보가 포함될 수 있습니다. 상대 경로 정보는 현재 작업 디렉터리를 기준으로 해석됩니다. 현재 작업 디렉터리를 가져오려면 를 참조하세요 GetCurrentDirectory.
디스크 볼륨 간에 파일을 이동하는 것은 파일을 복사하고 복사에 성공한 경우 원본에서 삭제하는 것과 같습니다.
디스크 볼륨 간에 파일을 이동하려고 하고 해당 파일이 사용 중인 경우 파일이 대상으로 복사되지만 원본에서 삭제되지는 않습니다.
일반적인 I/O 작업 목록은 일반적인 I/O 작업을 참조하세요.
추가 정보
적용 대상
.NET