Condividi tramite


File.Copy Metodo

Definizione

Copia un file esistente in un nuovo file.

Overload

Copy(String, String)

Copia un file esistente in un nuovo file. La sovrascrittura di un file con lo stesso nome non è consentita.

Copy(String, String, Boolean)

Copia un file esistente in un nuovo file. È consentita la sovrascrittura di un file con lo stesso nome.

Copy(String, String)

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

Copia un file esistente in un nuovo file. La sovrascrittura di un file con lo stesso nome non è consentita.

public:
 static void Copy(System::String ^ sourceFileName, System::String ^ destFileName);
public static void Copy (string sourceFileName, string destFileName);
static member Copy : string * string -> unit
Public Shared Sub Copy (sourceFileName As String, destFileName As String)

Parametri

sourceFileName
String

File da copiare.

destFileName
String

Nome del file di destinazione. Non può essere una directory o un file esistente.

Eccezioni

Il chiamante non dispone dell'autorizzazione richiesta.

sourceFileName o destFileName è una stringa di lunghezza zero, contiene solo spazi vuoti o contiene uno o più caratteri non validi. È possibile eseguire una query per individuare caratteri non validi usando il metodo GetInvalidPathChars().

-o-

sourceFileName o destFileName specifica una directory.

sourceFileName o destFileName è null.

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 non è stato trovato.

destFileName esiste.

-o-

Si è verificato un errore di I/O.

sourceFileName o destFileName non è valido.

Esempio

Nell'esempio seguente i file vengono copiati nella cartella di backup C:\archives\2008. Usa i due overload del metodo Copy come indicato di seguito:

  • Usa prima di tutto l'overload del metodo File.Copy(String, String) per copiare file di testo (.txt). Il codice dimostra che questo overload non consente la sovrascrittura dei file già copiati.

  • Usa quindi l'overload del metodo File.Copy(String, String, Boolean) per copiare immagini (.jpg file). Il codice dimostra che questo overload consente la sovrascrittura dei file già copiati.

string sourceDir = @"c:\current";
string backupDir = @"c:\archives\2008";

try
{
    string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
    string[] txtList = Directory.GetFiles(sourceDir, "*.txt");

    // Copy picture files.
    foreach (string f in picList)
    {
        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
    }

    // Copy text files.
    foreach (string f in txtList)
    {

        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        try
        {
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
        }

        // Catch exception if the file was already copied.
        catch (IOException copyError)
        {
            Console.WriteLine(copyError.Message);
        }
    }

    // Delete source files that were copied.
    foreach (string f in txtList)
    {
        File.Delete(f);
    }
    foreach (string f in picList)
    {
        File.Delete(f);
    }
}

catch (DirectoryNotFoundException dirNotFound)
{
    Console.WriteLine(dirNotFound.Message);
}
let sourceDir = @"c:\current"
let backupDir = @"c:\archives\2008"

try
    let picList = Directory.GetFiles(sourceDir, "*.jpg")
    let txtList = Directory.GetFiles(sourceDir, "*.txt")

    // Copy picture files.
    for f in picList do
        // Remove path from the file name.
        let fName = f.Substring(sourceDir.Length + 1)

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true)

    // Copy text files.
    for f in txtList do
        // Remove path from the file name.
        let fName = f.Substring(sourceDir.Length + 1)

        try
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

        // Catch exception if the file was already copied.
        with
        | :? IOException as copyError -> printfn $"{copyError.Message}"

    // Delete source files that were copied.
    for f in txtList do
        File.Delete f

    for f in picList do
        File.Delete f

// Catch exception if the file was already copied.
with
| :? DirectoryNotFoundException as dirNotFound -> printfn $"{dirNotFound.Message}"
Dim sourceDir As String = "c:\current"
Dim backupDir As String = "c:\archives\2008"

Try
    Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg")
    Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

    ' Copy picture files.
    For Each f As String In picList
        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        ' Use the Path.Combine method to safely append the file name to the path.
        ' Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), True)
    Next

    ' Copy text files.
    For Each f As String In txtList

        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        Try
            ' Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

            ' Catch exception if the file was already copied.
        Catch copyError As IOException
            Console.WriteLine(copyError.Message)
        End Try
    Next

    For Each f As String In txtList
        File.Delete(f)
    Next

    For Each f As String In picList
        File.Delete(f)
    Next

Catch dirNotFound As DirectoryNotFoundException
    Console.WriteLine(dirNotFound.Message)
End Try

Commenti

Questo metodo equivale all'overload del metodo Copy(String, String, Boolean) con il parametro overwrite impostato su false.

I parametri sourceFileName e destFileName possono specificare 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 il metodo Directory.GetCurrentDirectory. Questo metodo non supporta caratteri jolly nei parametri.

Gli attributi del file originale vengono conservati nel file copiato.

Vedi anche

Si applica a

Copy(String, String, Boolean)

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

Copia un file esistente in un nuovo file. È consentita la sovrascrittura di un file con lo stesso nome.

public:
 static void Copy(System::String ^ sourceFileName, System::String ^ destFileName, bool overwrite);
public static void Copy (string sourceFileName, string destFileName, bool overwrite);
static member Copy : string * string * bool -> unit
Public Shared Sub Copy (sourceFileName As String, destFileName As String, overwrite As Boolean)

Parametri

sourceFileName
String

File da copiare.

destFileName
String

Nome del file di destinazione. Non può trattarsi di una directory.

overwrite
Boolean

true se il file di destinazione deve essere sostituito se esiste già; in caso contrario, false.

Eccezioni

Il chiamante non dispone dell'autorizzazione richiesta.

-o-

destFileName è di sola lettura.

-o-

overwrite è true, destFileName esiste ed è nascosto, ma sourceFileName non è nascosto.

sourceFileName o destFileName è una stringa di lunghezza zero, contiene solo spazi vuoti o contiene uno o più caratteri non validi. È possibile eseguire una query per individuare caratteri non validi usando il metodo GetInvalidPathChars().

-o-

sourceFileName o destFileName specifica una directory.

sourceFileName o destFileName è null.

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 non è stato trovato.

destFileName esiste e overwrite è false.

-o-

Si è verificato un errore di I/O.

sourceFileName o destFileName non è valido.

Esempio

Nell'esempio seguente i file vengono copiati nella cartella di backup C:\archives\2008. Usa i due overload del metodo Copy come indicato di seguito:

  • Usa prima di tutto l'overload del metodo File.Copy(String, String) per copiare file di testo (.txt). Il codice dimostra che questo overload non consente la sovrascrittura dei file già copiati.

Usa quindi l'overload del metodo File.Copy(String, String, Boolean) per copiare immagini (.jpg file). Il codice dimostra che questo overload consente la sovrascrittura dei file già copiati.

string sourceDir = @"c:\current";
string backupDir = @"c:\archives\2008";

try
{
    string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
    string[] txtList = Directory.GetFiles(sourceDir, "*.txt");

    // Copy picture files.
    foreach (string f in picList)
    {
        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
    }

    // Copy text files.
    foreach (string f in txtList)
    {

        // Remove path from the file name.
        string fName = f.Substring(sourceDir.Length + 1);

        try
        {
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
        }

        // Catch exception if the file was already copied.
        catch (IOException copyError)
        {
            Console.WriteLine(copyError.Message);
        }
    }

    // Delete source files that were copied.
    foreach (string f in txtList)
    {
        File.Delete(f);
    }
    foreach (string f in picList)
    {
        File.Delete(f);
    }
}

catch (DirectoryNotFoundException dirNotFound)
{
    Console.WriteLine(dirNotFound.Message);
}
let sourceDir = @"c:\current"
let backupDir = @"c:\archives\2008"

try
    let picList = Directory.GetFiles(sourceDir, "*.jpg")
    let txtList = Directory.GetFiles(sourceDir, "*.txt")

    // Copy picture files.
    for f in picList do
        // Remove path from the file name.
        let fName = f.Substring(sourceDir.Length + 1)

        // Use the Path.Combine method to safely append the file name to the path.
        // Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true)

    // Copy text files.
    for f in txtList do
        // Remove path from the file name.
        let fName = f.Substring(sourceDir.Length + 1)

        try
            // Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

        // Catch exception if the file was already copied.
        with
        | :? IOException as copyError -> printfn $"{copyError.Message}"

    // Delete source files that were copied.
    for f in txtList do
        File.Delete f

    for f in picList do
        File.Delete f

// Catch exception if the file was already copied.
with
| :? DirectoryNotFoundException as dirNotFound -> printfn $"{dirNotFound.Message}"
Dim sourceDir As String = "c:\current"
Dim backupDir As String = "c:\archives\2008"

Try
    Dim picList As String() = Directory.GetFiles(sourceDir, "*.jpg")
    Dim txtList As String() = Directory.GetFiles(sourceDir, "*.txt")

    ' Copy picture files.
    For Each f As String In picList
        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        ' Use the Path.Combine method to safely append the file name to the path.
        ' Will overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), True)
    Next

    ' Copy text files.
    For Each f As String In txtList

        'Remove path from the file name.
        Dim fName As String = f.Substring(sourceDir.Length + 1)

        Try
            ' Will not overwrite if the destination file already exists.
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName))

            ' Catch exception if the file was already copied.
        Catch copyError As IOException
            Console.WriteLine(copyError.Message)
        End Try
    Next

    For Each f As String In txtList
        File.Delete(f)
    Next

    For Each f As String In picList
        File.Delete(f)
    Next

Catch dirNotFound As DirectoryNotFoundException
    Console.WriteLine(dirNotFound.Message)
End Try

Commenti

I parametri sourceFileName e destFileName possono specificare informazioni sul percorso relative o assolute. Le informazioni sul percorso relative sono interpretate come relative alla directory di lavoro corrente. Questo metodo non supporta caratteri jolly nei parametri.

Gli attributi del file originale vengono conservati nel file copiato.

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

Vedi anche

Si applica a