File.Copy メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
既存のファイルを新しいファイルにコピーします。
オーバーロード
Copy(String, String) |
既存のファイルを新しいファイルにコピーします。 同じ名前のファイルを上書きすることはできません。 |
Copy(String, String, Boolean) |
既存のファイルを新しいファイルにコピーします。 同じ名前のファイルを上書きできます。 |
Copy(String, String)
- ソース:
- File.cs
- ソース:
- File.cs
- ソース:
- File.cs
既存のファイルを新しいファイルにコピーします。 同じ名前のファイルを上書きすることはできません。
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)
パラメーター
- sourceFileName
- String
コピーするファイル。
- destFileName
- String
コピー先ファイルの名前。 ディレクトリまたは既存のファイルにすることはできません。
例外
呼び出し元に必要なアクセス許可がありません。
sourceFileName
または destFileName
は、長さ 0 の文字列、空白のみを含む、または 1 つ以上の無効な文字を含みます。
GetInvalidPathChars() メソッドを使用して、無効な文字を照会できます。
-又は-
sourceFileName
または destFileName
はディレクトリを指定します。
sourceFileName
または destFileName
が null
。
指定したパス、ファイル名、またはその両方が、システム定義の最大長を超えています。
sourceFileName
または destFileName
で指定されたパスが無効です (たとえば、マップされていないドライブ上にあります)。
sourceFileName
が見つかりませんでした。
sourceFileName
または destFileName
が無効な形式です。
例
次の例では、C:\archives\2008 バックアップ フォルダーにファイルをコピーします。 次のように、Copy メソッドの 2 つのオーバーロードを使用します。
最初に、File.Copy(String, String) メソッドのオーバーロードを使用して、テキスト (.txt) ファイルをコピーします。 このコードは、このオーバーロードによって、既にコピーされたファイルの上書きが許可されていないことを示しています。
次に、File.Copy(String, String, Boolean) メソッドのオーバーロードを使用して画像 (.jpg ファイル) をコピーします。 このコードは、このオーバーロードによって、既にコピーされたファイルの上書きが許可されることを示しています。
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
注釈
このメソッドは、overwrite
パラメーターを false
に設定した Copy(String, String, Boolean) メソッドのオーバーロードと同じです。
sourceFileName
および destFileName
パラメーターは、相対パス情報または絶対パス情報を指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、Directory.GetCurrentDirectory メソッドを参照してください。 このメソッドは、パラメーター内のワイルドカード文字をサポートしていません。
元のファイルの属性は、コピーされたファイルに保持されます。
こちらもご覧ください
- Move(String, String)
- Move(String, String)
- ファイルおよびストリーム I/O
- ファイル からテキストを読み取る
- 方法: ファイル にテキストを書き込む
- 方法: 新しく作成されたデータ ファイルの読み取りと書き込み
適用対象
Copy(String, String, Boolean)
- ソース:
- File.cs
- ソース:
- File.cs
- ソース:
- File.cs
既存のファイルを新しいファイルにコピーします。 同じ名前のファイルを上書きできます。
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)
パラメーター
- sourceFileName
- String
コピーするファイル。
- destFileName
- String
コピー先ファイルの名前。 ディレクトリにすることはできません。
- overwrite
- Boolean
宛先ファイルが既に存在する場合に置き換える必要がある場合に true
します。それ以外の場合は、false
します。
例外
呼び出し元に必要なアクセス許可がありません。
-又は-
destFileName
は読み取り専用です。
-又は-
overwrite
true
、destFileName
は存在し、非表示になっていますが、sourceFileName
は非表示ではありません。
sourceFileName
または destFileName
は、長さ 0 の文字列、空白のみを含む、または 1 つ以上の無効な文字を含みます。
GetInvalidPathChars() メソッドを使用して、無効な文字を照会できます。
-又は-
sourceFileName
または destFileName
はディレクトリを指定します。
sourceFileName
または destFileName
が null
。
指定したパス、ファイル名、またはその両方が、システム定義の最大長を超えています。
sourceFileName
または destFileName
で指定されたパスが無効です (たとえば、マップされていないドライブ上にあります)。
sourceFileName
が見つかりませんでした。
sourceFileName
または destFileName
が無効な形式です。
例
次の例では、C:\archives\2008 バックアップ フォルダーにファイルをコピーします。 次のように、Copy メソッドの 2 つのオーバーロードを使用します。
- 最初に、File.Copy(String, String) メソッドのオーバーロードを使用して、テキスト (.txt) ファイルをコピーします。 このコードは、このオーバーロードによって、既にコピーされたファイルの上書きが許可されていないことを示しています。
次に、File.Copy(String, String, Boolean) メソッドのオーバーロードを使用して画像 (.jpg ファイル) をコピーします。 このコードは、このオーバーロードによって、既にコピーされたファイルの上書きが許可されることを示しています。
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
注釈
sourceFileName
および destFileName
パラメーターは、相対パス情報または絶対パス情報を指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 このメソッドは、パラメーター内のワイルドカード文字をサポートしていません。
元のファイルの属性は、コピーされたファイルに保持されます。
一般的な I/O タスクの一覧については、「一般的な I/O タスクの」を参照してください。
こちらもご覧ください
- Move(String, String)
- Move(String, String)
- ファイルおよびストリーム I/O
- ファイル からテキストを読み取る
- 方法: ファイル にテキストを書き込む
- 方法: 新しく作成されたデータ ファイルの読み取りと書き込み
適用対象
.NET