File.Move メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
Move(String, String) |
指定したファイルを新しい場所に移動します。オプションで新しいファイル名を指定することもできます。 |
Move(String, String, Boolean) |
指定したファイルを新しい場所に移動し、新しいファイル名を指定するオプションと、コピー先ファイルが既に存在する場合は置き換えるオプションを指定します。 |
Move(String, String)
- ソース:
- File.cs
- ソース:
- File.cs
- ソース:
- 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
注釈
この方法はディスク ボリューム間で機能し、ソースと宛先が同じ場合は例外をスローしません。
同じ名前のファイルをそのディレクトリに移動してファイルを置き換えようとすると、 IOException がスローされることに注意してください。 この問題を回避するには、次の操作を行います。
.NET Core 3.0 以降のバージョンでは、 パラメーター
overwrite
を にtrue
設定して を呼び出Move(String, String, Boolean)すことができます。これにより、ファイルが存在する場合はファイルが置き換えられます。すべての .NET バージョンでは、 を呼び出して overwrite でコピーし、 を呼び出Copy(String, String, Boolean)
Delete
して余分なソース ファイルを削除できます。 この方法は、コピーするファイルが小さく、"アトミック" なファイル操作を探している場合に推奨されます。Delete
最初にファイルがクラッシュし、システムまたはプログラムがクラッシュした場合、コピー先のファイルは存在しなくなります。すべての .NET バージョンでは、 を呼び出す前に を呼び出Delete(String)
Move
すことができます。これにより、ファイルが存在する場合にのみ削除されます。
引数と destFileName
引数にはsourceFileName
、相対パス情報または絶対パス情報を含めることができます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、「」を参照してください GetCurrentDirectory。
ディスク ボリューム間でのファイルの移動は、ファイルをコピーし、コピーが成功した場合にソースから削除することと同じです。
ディスク ボリューム間でファイルを移動しようとして、そのファイルが使用中の場合、ファイルはコピー先にコピーされますが、ソースから削除されません。
共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。
こちらもご覧ください
適用対象
Move(String, String, Boolean)
- ソース:
- File.cs
- ソース:
- File.cs
- ソース:
- 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
注釈
この方法はディスク ボリューム間で機能し、ソースと宛先が同じ場合は例外をスローしません。
引数と destFileName
引数にはsourceFileName
、相対パス情報または絶対パス情報を含めることができます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、「」を参照してください GetCurrentDirectory。
ディスク ボリューム間でのファイルの移動は、ファイルをコピーし、コピーが成功した場合にソースから削除することと同じです。
ディスク ボリューム間でファイルを移動しようとして、そのファイルが使用中の場合、ファイルはコピー先にコピーされますが、ソースから削除されません。
共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。
こちらもご覧ください
適用対象
.NET