関数があるとしましょう
public void UploadSomewhere(FileStream fs)
FileStreamを使用する場合、ファイルパスを指すのに十分ではFileMode
ないので、ファイルをコピー/移動するだけの場合は、とを選択する必要があります。正しいFileModeが何であるかわかりません。何か案は?
関数があるとしましょう
public void UploadSomewhere(FileStream fs)
FileStreamを使用する場合、ファイルパスを指すのに十分ではFileMode
ないので、ファイルをコピー/移動するだけの場合は、とを選択する必要があります。正しいFileModeが何であるかわかりません。何か案は?
FileStreamを使用する場合は、ソースファイルにOpenを使用するだけです。
例えば、
var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
ターゲットファイルの場合、それが存在する場合に何が起こるかを決定する必要があります。
書き込み権限がある場合、作成すると既存のファイルを上書きできます。
ファイルが存在する場合、CreateNewはスローします。繰り返しますが、書き込み権限が必要です。
ただし、他の人が書いているように、FileStreamを完全にスキップして、Fileコマンドを使用することもできます。
参照: http: //msdn.microsoft.com/en-us/library/system.io.filemode.aspx
ファイルをコピー/移動しているだけで、パスがすでにわかっている場合(質問から理解できる限り)、まったく必要ありませんFieStream
。File.Move
またはFile.Copy
機能するだけで十分です。
http://msdn.microsoft.com/en-us/library/system.io.filemode.aspxを参照してください
ファイルを読むだけでよい場合は、FileMode.Open
ファイルをコピーする場合FileMode.Open
とFileAccess.Read
。
このプロセス中にファイルへのアクセスを共有する場合は、FileShare
オプションも指定します。
詳細については、MSDNを参照してください。
FileStreamを使用してファイルをコピーする場合は、以下の例で正しい方法を示す必要があります。
using (FileStream sourceFile = new FileStream("c:\\pathToSourceFile", FileMode.Open,FileAccess.Read))
{
using (FileStream destFile = new FileStream("c:\\pathToDestinationFile", FileMode.Create))
{
int bufferSize = 65536;
int bytesRead = -1;
byte[] bytes = new byte[bufferSize];
while ((bytesRead = sourceFile.Read(bytes, 0, bufferSize)) > 0)
{
destFile.Write(bytes, 0, bytesRead);
}
}
}