File.Copy File.Copy File.Copy File.Copy Method

Definizione

Copia un file esistente in un nuovo file.Copies an existing file to a new file.

Overload

Copy(String, String) Copy(String, String) Copy(String, String) Copy(String, String)

Copia un file esistente in un nuovo file.Copies an existing file to a new file. Non è consentito sovrascrivere un file con lo stesso nome.Overwriting a file of the same name is not allowed.

Copy(String, String, Boolean) Copy(String, String, Boolean) Copy(String, String, Boolean) Copy(String, String, Boolean)

Copia un file esistente in un nuovo file.Copies an existing file to a new file. È consentito sovrascrivere un file con lo stesso nome.Overwriting a file of the same name is allowed.

Copy(String, String) Copy(String, String) Copy(String, String) Copy(String, String)

Copia un file esistente in un nuovo file.Copies an existing file to a new file. Non è consentito sovrascrivere un file con lo stesso nome.Overwriting a file of the same name is not allowed.

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 String String String

File da copiare.The file to copy.

destFileName
String String String String

Nome del file di destinazione.The name of the destination file. Non può essere una directory o un file esistente.This cannot be a directory or an existing file.

Eccezioni

Il chiamante non dispone dell'autorizzazione richiesta.The caller does not have the required permission.

sourceFileName o destFileName è una stringa di lunghezza zero, contiene solo spazi vuoti o contiene uno o più caratteri non validi definiti da InvalidPathChars.sourceFileName or destFileName is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.

In alternativa-or- sourceFileName o destFileName specifica una directory.sourceFileName or destFileName specifies a directory.

sourceFileName o destFileName è null.sourceFileName or destFileName is null.

Il percorso specificato, il nome file o entrambi superano la lunghezza massima definita dal sistema.The specified path, file name, or both exceed the system-defined maximum length.

Il percorso specificato in sourceFileName o destFileName non è valido (ad esempio si trova in un'unità non mappata).The path specified in sourceFileName or destFileName is invalid (for example, it is on an unmapped drive).

Il parametro sourceFileName non è stato trovato.sourceFileName was not found.

L'oggetto destFileName esiste.destFileName exists.

In alternativa-or- Si è verificato un errore di I/O.An I/O error has occurred.

Il formato di sourceFileName o destFileName non è valido.sourceFileName or destFileName is in an invalid format.

Esempi

Nell'esempio seguente copia file cartella di backup c:\archives\2008.The following example copies files to the C:\archives\2008 backup folder. USA i due overload del Copy metodo come indicato di seguito:It uses the two overloads of the Copy method as follows:

  • USA innanzitutto l'overload File.Copy(String, String) del metodo per copiare i file di testo (con estensione txt).It first uses the File.Copy(String, String) method overload to copy text (.txt) files. Il codice dimostra che questo overload non consente la sovrascrittura dei file che sono già stati copiati.The code demonstrates that this overload does not allow overwriting files that were already copied.

  • USA quindi l'overload File.Copy(String, String, Boolean) del metodo per copiare immagini (file con estensione jpg).It then uses the File.Copy(String, String, Boolean) method overload to copy pictures (.jpg files). Il codice dimostra che questo overload consente la sovrascrittura dei file che sono già stati copiati.The code demonstrates that this overload does allow overwriting files that were already copied.

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

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 è equivalente all'overload Copy(String, String, Boolean) del metodo con il overwrite parametro impostato su false.This method is equivalent to the Copy(String, String, Boolean) method overload with the overwrite parameter set to false.

I sourceFileName parametri destFileName e possono specificare informazioni sul percorso relativo o assoluto.The sourceFileName and destFileName parameters can specify relative or absolute path information. Le informazioni sul percorso relativo vengono interpretate in relazione alla directory di lavoro corrente.Relative path information is interpreted as relative to the current working directory. Per ottenere la directory di lavoro corrente, vedere Directory.GetCurrentDirectory il metodo.To obtain the current working directory, see the Directory.GetCurrentDirectory method. Questo metodo non supporta i caratteri jolly nei parametri.This method does not support wildcard characters in the parameters.

Gli attributi del file originale vengono conservati nel file copiato.The attributes of the original file are retained in the copied file.

Sicurezza

FileIOPermission
per la lettura sourceFileName e la scrittura destFileNamein.for reading from sourceFileName and writing to destFileName. Enumerazioni associate: Read,WriteAssociated enumerations: Read, Write

Vedi anche

Copy(String, String, Boolean) Copy(String, String, Boolean) Copy(String, String, Boolean) Copy(String, String, Boolean)

Copia un file esistente in un nuovo file.Copies an existing file to a new file. È consentito sovrascrivere un file con lo stesso nome.Overwriting a file of the same name is allowed.

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 String String String

File da copiare.The file to copy.

destFileName
String String String String

Nome del file di destinazione.The name of the destination file. Non può essere una directory.This cannot be a directory.

overwrite
Boolean Boolean Boolean Boolean

true se il file di destinazione può essere sovrascritto; in caso contrario, false.true if the destination file can be overwritten; otherwise, false.

Eccezioni

Il chiamante non dispone dell'autorizzazione richiesta.The caller does not have the required permission.

-oppure--or- destFileName è di sola lettura.destFileName is read-only.

-oppure--or- overwrite è true, destFileName esiste ed è nascosto, ma sourceFileName non è nascosto.overwrite is true, destFileName exists and is hidden, but sourceFileName is not hidden.

sourceFileName o destFileName è una stringa di lunghezza zero, contiene solo spazi vuoti o contiene uno o più caratteri non validi definiti da InvalidPathChars.sourceFileName or destFileName is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.

In alternativa-or- sourceFileName o destFileName specifica una directory.sourceFileName or destFileName specifies a directory.

sourceFileName o destFileName è null.sourceFileName or destFileName is null.

Il percorso specificato, il nome file o entrambi superano la lunghezza massima definita dal sistema.The specified path, file name, or both exceed the system-defined maximum length.

Il percorso specificato in sourceFileName o destFileName non è valido (ad esempio si trova in un'unità non mappata).The path specified in sourceFileName or destFileName is invalid (for example, it is on an unmapped drive).

L'oggetto sourceFileName non è stato trovato.sourceFileName was not found.

destFileName esiste e overwrite è false.destFileName exists and overwrite is false.

In alternativa-or- Si è verificato un errore di I/O.An I/O error has occurred.

Il formato di sourceFileName o destFileName non è valido.sourceFileName or destFileName is in an invalid format.

Esempi

Nell'esempio seguente copia file cartella di backup c:\archives\2008.The following example copies files to the C:\archives\2008 backup folder. USA i due overload del Copy metodo come indicato di seguito:It uses the two overloads of the Copy method as follows:

  • USA innanzitutto l'overload File.Copy(String, String) del metodo per copiare i file di testo (con estensione txt).It first uses the File.Copy(String, String) method overload to copy text (.txt) files. Il codice dimostra che questo overload non consente la sovrascrittura dei file che sono già stati copiati.The code demonstrates that this overload does not allow overwriting files that were already copied.

USA quindi l'overload File.Copy(String, String, Boolean) del metodo per copiare immagini (file con estensione jpg).It then uses the File.Copy(String, String, Boolean) method overload to copy pictures (.jpg files). Il codice dimostra che questo overload consente la sovrascrittura dei file che sono già stati copiati.The code demonstrates that this overload does allow overwriting files that were already copied.

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

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 sourceFileName parametri destFileName e possono specificare informazioni sul percorso relativo o assoluto.The sourceFileName and destFileName parameters can specify relative or absolute path information. Le informazioni sul percorso relativo vengono interpretate in relazione alla directory di lavoro corrente.Relative path information is interpreted as relative to the current working directory. Questo metodo non supporta i caratteri jolly nei parametri.This method does not support wildcard characters in the parameters.

Gli attributi del file originale vengono conservati nel file copiato.The attributes of the original file are retained in the copied file.

Per un elenco delle attività di I/O comuni, vedere attività di i/o comuni.For a list of common I/O tasks, see Common I/O Tasks.

Sicurezza

FileIOPermission
per la lettura sourceFileName e la scrittura destFileNamein.for reading from sourceFileName and writing to destFileName. Enumerazioni associate: Read,WriteAssociated enumerations: Read, Write

Vedi anche

Si applica a