HOWTO · Csharp

Rinomina un file in C#

Questo articolo introduce come rinominare un file in C#. Include il metodo Move() e il metodo Copy().

In questa pagina

In C#, rinominare un file significa spostarlo in un nuovo percorso. Usa File.Move quando il file non deve più trovarsi nel percorso originale. Usa File.Copy quando vuoi creare un secondo file con il nuovo nome e conservare l’originale. Entrambe le operazioni richiedono un percorso di origine e uno di destinazione: per cambiare solo il nome, combina la stessa directory con il nuovo nome del file.

Gli esempi seguenti creano file temporanei, così puoi adattare la configurazione dei percorsi alla tua applicazione. Entrambi sono stati completati correttamente nel controllo di esecuzione fornito e non producono output nella console.

Rinomina un file con File.Move

File.Move trasferisce un file dal percorso di origine a quello di destinazione. Per rinominarlo nella stessa directory, imposta il percorso di destinazione usando quella directory e il nuovo nome del file. Una volta completato lo spostamento, il file si trova nella destinazione e non è più disponibile nel percorso di origine.

Questo programma completo crea un file di origine temporaneo, lo sposta assegnandogli un nuovo nome nella stessa directory e, al termine, rimuove la directory temporanea:

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string directory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
        Directory.CreateDirectory(directory);
        string sourcePath = Path.Combine(directory, "old-name.txt");
        string destinationPath = Path.Combine(directory, "new-name.txt");

        try
        {
            File.WriteAllText(sourcePath, "Example content");
            File.Move(sourcePath, destinationPath);
        }
        finally
        {
            Directory.Delete(directory, true);
        }
    }
}

Il file di origine deve esistere e il percorso di destinazione deve essere utilizzabile. Se la destinazione si trova in un’altra directory, l’operazione vi sposta il file e ne cambia anche il nome. File.Move è quindi adatto quando il vecchio percorso non deve più indicare il file; non lascia una seconda copia.

Crea una copia rinominata con File.Copy

Scegli File.Copy quando vuoi conservare sia l’originale sia un file con il nuovo nome. Il primo argomento è il file di origine esistente; il secondo è il percorso in cui creare la copia. Per una copia simile a una semplice rinomina puoi usare la stessa directory, oppure indicarne un’altra se la copia deve trovarsi altrove.

Questo programma completo crea un file di origine temporaneo, lo copia con un nuovo nome e poi elimina entrambi i file insieme alla directory che li contiene:

Il codice e le etichette o gli output visibili in questa sezione restano in inglese.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string directory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
        Directory.CreateDirectory(directory);
        string sourcePath = Path.Combine(directory, "old-name.txt");
        string destinationPath = Path.Combine(directory, "new-name.txt");

        try
        {
            File.WriteAllText(sourcePath, "Example content");
            File.Copy(sourcePath, destinationPath);
        }
        finally
        {
            Directory.Delete(directory, true);
        }
    }
}

Dopo aver completato la copia, il file di origine resta nel percorso originale e il nuovo file è disponibile nella destinazione. È utile quando devi conservare l’originale, per esempio come backup o come input per un’altra operazione. Tieni presente che la copia richiede spazio aggiuntivo e che le modifiche successive a un file non aggiornano automaticamente l’altro.

Gestisci i percorsi e i file di destinazione esistenti

Usa stringhe C# valide per i percorsi. Una stringa verbatim come @"C:\\example\\old-name.txt" evita che le barre rovesciate vengano interpretate come caratteri di escape; Path.Combine è un altro modo pratico per comporre un percorso a partire da una directory e da un nome di file. I programmi di esempio usano Path.Combine con una directory temporanea, quindi non dipendono da un’unità o da una cartella esistente specifica. In un’applicazione, scegli una directory accessibile al processo e, se necessario, verifica che la relativa cartella padre esista.

Il file di origine deve esistere perché entrambe le operazioni possano riuscire. Un nome scritto in modo errato, una directory di lavoro imprevista o il percorso di una cartella inesistente possono impedire l’operazione. Quando possibile, componi i percorsi usando valori di directory noti e verifica che il file di origine sia quello che intendi spostare o copiare prima di modificarne la posizione.

Per impostazione predefinita, File.Move e File.Copy non sovrascrivono un file di destinazione esistente. Se il nome scelto potrebbe essere già in uso, scegline un altro oppure gestisci questa situazione prima di chiamare l’operazione. La disponibilità o il comportamento degli overload per la sovrascrittura dipendono dal framework di destinazione: prima di usarne uno, consulta la documentazione del framework scelto per l’applicazione. Non presumere che una rinomina sostituisca silenziosamente un file esistente.

In breve, usa File.Move per spostare l’unico file nel nuovo percorso e File.Copy per creare una copia separata mantenendo l’originale. La scelta dipende dal fatto che il file debba rimanere anche nel percorso precedente.