File.Move メソッド

定義

オーバーロード

Move(String, String)

指定したファイルを新しい場所に移動します。オプションで新しいファイル名を指定することもできます。

Move(String, String, Boolean)

指定したファイルを新しい場所に移動します。新しいファイル名を指定し、既に存在する場合は、対象ファイルを上書きするオプションが用意されています。

Move(String, String)

指定したファイルを新しい場所に移動します。オプションで新しいファイル名を指定することもできます。

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

ファイルの新しいパスおよび名前。

例外

destFileName が既に存在します。

  • または -

ディスクボリューム間でファイルをコピー中に、i/o エラーが発生しました。

sourceFileName が見つかりませんでした。

sourceFileName または destFileNamenull です。

.NET Framework と .net Core のバージョン 2.1: 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());
        }
    }
}
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 以降のバージョンでは、パラメーターを Move(String, String, Boolean) に設定し overwrite true て、ファイルが存在する場合はそれを置き換えることができます。

  • すべての .NET バージョンでは、を呼び出して、上書きを使用して copy を実行し、を Copy(String, String, Boolean) 呼び出して、 Delete 余分なソースファイルを削除できます。 この方法は、コピーするファイルが小さく、"atomic" ファイル操作を検索する場合にお勧めします。 最初にファイルを作成し、 Delete システムまたはプログラムがクラッシュした場合は、コピー先のファイルは存在しなくなります。

  • すべての .NET バージョンでは、を呼び出す前にを呼び出すことができ Delete(String) Move ます。この場合、ファイルが存在する場合にのみ、ファイルが削除されます。

sourceFileName引数と引数には、 destFileName 相対パスまたは絶対パス情報を含めることができます。 相対パス情報は、現在の作業ディレクトリを基準として解釈されます。 現在の作業ディレクトリを取得するには、「」を参照してください GetCurrentDirectory

ディスクボリューム間でファイルを移動することは、コピーが正常に完了した場合に、ファイルをコピーしてソースから削除することと同じです。

ディスクボリューム間でファイルを移動しようとしたときに、そのファイルが使用されている場合、ファイルはコピー先にコピーされますが、ソースからは削除されません。

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。

こちらもご覧ください

適用対象

Move(String, String, Boolean)

指定したファイルを新しい場所に移動します。新しいファイル名を指定し、既に存在する場合は、対象ファイルを上書きするオプションが用意されています。

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 が既に存在し、overwritefalse です。

  • または -

ディスクボリューム間でファイルをコピー中に、i/o エラーが発生しました。

sourceFileName が見つかりませんでした。

sourceFileName または destFileNamenull です。

.NET Framework と .net Core のバージョン 2.1: 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());
        }
    }
}
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

注釈

この方法は、ディスクボリューム間で機能します。コピー元とコピー先が同じである場合、例外はスローされません。

sourceFileName引数と引数には、 destFileName 相対パスまたは絶対パス情報を含めることができます。 相対パス情報は、現在の作業ディレクトリを基準として解釈されます。 現在の作業ディレクトリを取得するには、「」を参照してください GetCurrentDirectory

ディスクボリューム間でファイルを移動することは、コピーが正常に完了した場合に、ファイルをコピーしてソースから削除することと同じです。

ディスクボリューム間でファイルを移動しようとしたときに、そのファイルが使用されている場合、ファイルはコピー先にコピーされますが、ソースからは削除されません。

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。

こちらもご覧ください

適用対象