File.Move Metodo

Definizione

Overload

Move(String, String)

Sposta il file specificato in un nuovo percorso, consentendo di specificare per esso un nuovo nome.

Move(String, String, Boolean)

Sposta un file specificato in un nuovo percorso, fornendo le opzioni per specificare un nuovo nome file e sovrascrivere il file di destinazione se esiste già.

Move(String, String)

Sposta il file specificato in un nuovo percorso, consentendo di specificare per esso un nuovo nome.

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)

Parametri

sourceFileName
String

Nome del file da spostare. Può includere un percorso relativo o assoluto.

destFileName
String

Nuovo percorso e nome del file.

Eccezioni

destFileName esiste già.

-oppure-

Si è verificato un errore di I/O, ad esempio durante la copia del file tra volumi del disco.

Il parametro sourceFileName non è stato trovato.

sourceFileName o destFileName è null.

.NET Framework versioni di .NET Core precedenti alla 2.1: o è una stringa di lunghezza zero, contiene solo spazi vuoti sourceFileName o contiene caratteri non destFileName validi. È possibile cercare i caratteri non validi usando il metodo GetInvalidPathChars().

Il chiamante non dispone dell'autorizzazione richiesta.

Il percorso specificato, il nome file o entrambi superano la lunghezza massima definita dal sistema.

Il percorso specificato in sourceFileName o destFileName non è valido (ad esempio, si trova in un'unità non mappata).

Il formato di sourceFileName o destFileName non è valido.

Esempio

Nell'esempio seguente viene spostato un 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

Commenti

Questo metodo funziona tra volumi di dischi e non genera un'eccezione se l'origine e la destinazione sono uguali.

Si noti che se si tenta di sostituire un file spostando un file con lo stesso nome in tale directory, viene IOException generata un'eccezione . Per evitare questo problema:

  • In .NET Core 3.0 e versioni successive è possibile chiamare impostando il parametro su , che sostituirà il Move(String, String, Boolean) overwrite true file, se esistente.

  • In tutte le versioni di .NET è possibile chiamare per copiare con overwrite e quindi Copy(String, String, Boolean) chiamare per rimuovere il file di origine in Delete eccesso. Questa strategia è consigliabile se il file copiato è di piccole dimensioni e si sta cercando un'operazione di file "atomica". Se si verifica prima il file e il sistema o il programma si arresta in modo Delete anomalo, il file di destinazione non esiste più.

  • In tutte le versioni di .NET è possibile chiamare prima di chiamare , che eliminerà Delete(String) il file solo se Move esiste.

Gli sourceFileName argomenti e possono includere informazioni sul percorso relativo o destFileName assoluto. Le informazioni sul percorso relativo vengono interpretate come relative alla directory di lavoro corrente. Per ottenere la directory di lavoro corrente, vedere GetCurrentDirectory .

Lo spostamento del file tra volumi del disco equivale a copiare il file ed eliminarlo dall'origine se la copia ha avuto esito positivo.

Se si tenta di spostare un file tra volumi del disco e tale file è in uso, il file viene copiato nella destinazione, ma non viene eliminato dall'origine.

Per un elenco delle attività di I/O comuni, vedere Attività di I/O comuni.

Vedi anche

Si applica a

Move(String, String, Boolean)

Sposta un file specificato in un nuovo percorso, fornendo le opzioni per specificare un nuovo nome file e sovrascrivere il file di destinazione se esiste già.

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)

Parametri

sourceFileName
String

Nome del file da spostare. Può includere un percorso relativo o assoluto.

destFileName
String

Nuovo percorso e nome del file.

overwrite
Boolean

true per sovrascrivere il file di destinazione se esiste già. false in caso contrario.

Eccezioni

destFileName esiste già e overwrite è false.

-oppure-

Si è verificato un errore di I/O, ad esempio durante la copia del file tra volumi del disco.

Il parametro sourceFileName non è stato trovato.

sourceFileName o destFileName è null.

.NET Framework versioni di .NET Core precedenti alla 2.1: o è una stringa di lunghezza zero, contiene solo spazi vuoti sourceFileName o contiene caratteri non destFileName validi. È possibile cercare i caratteri non validi usando il metodo GetInvalidPathChars().

Il chiamante non dispone dell'autorizzazione richiesta.

Il percorso specificato, il nome file o entrambi superano la lunghezza massima definita dal sistema.

Il percorso specificato in sourceFileName o destFileName non è valido (ad esempio, si trova in un'unità non mappata).

Il formato di sourceFileName o destFileName non è valido.

Esempio

Nell'esempio seguente viene spostato un 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

Commenti

Questo metodo funziona tra volumi di dischi e non genera un'eccezione se l'origine e la destinazione sono uguali.

Gli sourceFileName argomenti e possono includere informazioni sul percorso relativo o destFileName assoluto. Le informazioni sul percorso relativo vengono interpretate come relative alla directory di lavoro corrente. Per ottenere la directory di lavoro corrente, vedere GetCurrentDirectory .

Lo spostamento del file tra volumi del disco equivale a copiare il file ed eliminarlo dall'origine se la copia ha avuto esito positivo.

Se si tenta di spostare un file tra volumi del disco e tale file è in uso, il file viene copiato nella destinazione, ma non viene eliminato dall'origine.

Per un elenco delle attività di I/O comuni, vedere Attività di I/O comuni.

Vedi anche

Si applica a