Leggere in inglese

Condividi tramite


File.Move Metodo

Definizione

Overload

Move(String, String)

Sposta un file specificato in un nuovo percorso, fornendo l'opzione per specificare un nuovo nome file.

Move(String, String, Boolean)

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

Move(String, String)

Origine:
File.cs
Origine:
File.cs
Origine:
File.cs

Sposta un file specificato in un nuovo percorso, fornendo l'opzione per specificare un nuovo nome file.

public static void Move (string sourceFileName, string destFileName);

Parametri

sourceFileName
String

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

destFileName
String

Nuovo percorso e nome per il file.

Eccezioni

destFileName esiste già.

-o-

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

sourceFileName non è stato trovato.

sourceFileName o destFileName è null.

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

Il chiamante non dispone dell'autorizzazione richiesta.

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

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

sourceFileName o destFileName non è valido.

Esempio

Nell'esempio seguente viene spostato un file.

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());
        }
    }
}

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 generata una IOException. Per evitare questo problema:

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

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

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

Gli argomenti sourceFileName e destFileName possono includere informazioni sul percorso relative o assolute. Le informazioni sul percorso relative sono 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 di 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

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Move(String, String, Boolean)

Origine:
File.cs
Origine:
File.cs
Origine:
File.cs

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

public static void Move (string sourceFileName, string destFileName, bool overwrite);

Parametri

sourceFileName
String

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

destFileName
String

Nuovo percorso e nome per il file.

overwrite
Boolean

true sostituire il file di destinazione se esiste già; false in caso contrario.

Eccezioni

destFileName esiste già e overwrite è false.

-o-

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

sourceFileName non è stato trovato.

sourceFileName o destFileName è null.

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

Il chiamante non dispone dell'autorizzazione richiesta.

-o-

Il sistema operativo non è riuscito ad acquisire un accesso esclusivo al file di destinazione.

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

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

sourceFileName o destFileName non è valido.

Esempio

Nell'esempio seguente viene spostato un file.

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());
        }
    }
}

Commenti

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

Gli argomenti sourceFileName e destFileName possono includere informazioni sul percorso relative o assolute. Le informazioni sul percorso relative sono 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 di 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

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9