File.Copy Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Kopierar en befintlig fil till en ny fil.
Överlagringar
| Name | Description |
|---|---|
| Copy(String, String) |
Kopierar en befintlig fil till en ny fil. Det är inte tillåtet att skriva över en fil med samma namn. |
| Copy(String, String, Boolean) |
Kopierar en befintlig fil till en ny fil. Det är tillåtet att skriva över en fil med samma namn. |
Copy(String, String)
Kopierar en befintlig fil till en ny fil. Det är inte tillåtet att skriva över en fil med samma namn.
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)
Parametrar
- sourceFileName
- String
Filen som ska kopieras.
- destFileName
- String
Namnet på målfilen. Det kan inte vara en katalog eller en befintlig fil.
Undantag
Anroparen har inte den behörighet som krävs.
sourceFileName eller destFileName är en sträng med noll längd, innehåller endast tomt utrymme eller innehåller ett eller flera ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars() av metoden .
-eller-
sourceFileName eller destFileName anger en katalog.
sourceFileName eller destFileName är null.
Den angivna sökvägen, filnamnet eller båda överskrider den systemdefinierade maximala längden.
Sökvägen som anges i sourceFileName eller destFileName är ogiltig (till exempel finns den på en ommappad enhet).
sourceFileName hittades inte.
sourceFileName eller destFileName är i ett ogiltigt format.
Exempel
I följande exempel kopieras filer till mappen C:\archives\2008 backup. Den använder de två överlagringarna av metoden enligt Copy följande:
Den använder File.Copy(String, String) först metodens överlagring för att kopiera textfiler (.txt). Koden visar att den här överlagringen inte tillåter överskrivning av filer som redan har kopierats.
Den använder File.Copy(String, String, Boolean) sedan metodens överlagring för att kopiera bilder (.jpg filer). Koden visar att den här överlagringen tillåter överskrivning av filer som redan har kopierats.
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
Kommentarer
Den här metoden motsvarar Copy(String, String, Boolean) metodens överlagring med parametern inställd på falseoverwrite .
Parametrarna sourceFileName och destFileName kan ange relativ eller absolut sökvägsinformation. Relativ sökvägsinformation tolkas som relativ till den aktuella arbetskatalogen. Information om hur du hämtar den aktuella arbetskatalogen finns i Directory.GetCurrentDirectory metoden . Den här metoden stöder inte jokertecken i parametrarna.
Attributen för den ursprungliga filen behålls i den kopierade filen.
Se även
- Move(String, String)
- Move(String, String)
- Fil- och ström-I/O
- Läsa text från en fil
- Anvisningar: Skriva text till en fil
- Anvisningar: Läsa och skriva till en nyligen skapad datafil
Gäller för
Copy(String, String, Boolean)
Kopierar en befintlig fil till en ny fil. Det är tillåtet att skriva över en fil med samma namn.
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)
Parametrar
- sourceFileName
- String
Filen som ska kopieras.
- destFileName
- String
Namnet på målfilen. Det kan inte vara en katalog.
- overwrite
- Boolean
trueom målfilen ska ersättas om den redan finns. annars . false
Undantag
Anroparen har inte den behörighet som krävs.
-eller-
destFileName är skrivskyddad.
-eller-
overwrite är true, destFileName finns och är dold, men sourceFileName är inte dold.
sourceFileName eller destFileName är en sträng med noll längd, innehåller endast tomt utrymme eller innehåller ett eller flera ogiltiga tecken. Du kan fråga efter ogiltiga tecken med hjälp GetInvalidPathChars() av metoden .
-eller-
sourceFileName eller destFileName anger en katalog.
sourceFileName eller destFileName är null.
Den angivna sökvägen, filnamnet eller båda överskrider den systemdefinierade maximala längden.
Sökvägen som anges i sourceFileName eller destFileName är ogiltig (till exempel finns den på en ommappad enhet).
sourceFileName hittades inte.
sourceFileName eller destFileName är i ett ogiltigt format.
Exempel
I följande exempel kopieras filer till mappen C:\archives\2008 backup. Den använder de två överlagringarna av metoden enligt Copy följande:
- Den använder File.Copy(String, String) först metodens överlagring för att kopiera textfiler (.txt). Koden visar att den här överlagringen inte tillåter överskrivning av filer som redan har kopierats.
Den använder File.Copy(String, String, Boolean) sedan metodens överlagring för att kopiera bilder (.jpg filer). Koden visar att den här överlagringen tillåter överskrivning av filer som redan har kopierats.
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
Kommentarer
Parametrarna sourceFileName och destFileName kan ange relativ eller absolut sökvägsinformation. Relativ sökvägsinformation tolkas som relativ till den aktuella arbetskatalogen. Den här metoden stöder inte jokertecken i parametrarna.
Attributen för den ursprungliga filen behålls i den kopierade filen.
En lista över vanliga I/O-uppgifter finns i Vanliga I/O-uppgifter.
Se även
- Move(String, String)
- Move(String, String)
- Fil- och ström-I/O
- Läsa text från en fil
- Anvisningar: Skriva text till en fil
- Anvisningar: Läsa och skriva till en nyligen skapad datafil