0

関数があるとしましょう

public void UploadSomewhere(FileStream fs)

FileStreamを使用する場合、ファイルパスを指すのに十分ではFileModeないので、ファイルをコピー/移動するだけの場合は、とを選択する必要があります。正しいFileModeが何であるかわかりません。何か案は?

4

5 に答える 5

2

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

于 2012-08-31T12:46:36.233 に答える
1

ファイルをコピー/移動しているだけで、パスがすでにわかっている場合(質問から理解できる限り)、まったく必要ありませんFieStreamFile.MoveまたはFile.Copy機能するだけで十分です。

于 2012-08-31T12:40:39.433 に答える
0

http://msdn.microsoft.com/en-us/library/system.io.filemode.aspxを参照してください

ファイルを読むだけでよい場合は、FileMode.Open

于 2012-08-31T12:40:26.257 に答える
0

ファイルをコピーする場合FileMode.OpenFileAccess.Read

このプロセス中にファイルへのアクセスを共有する場合は、FileShareオプションも指定します。

詳細については、MSDNを参照してください。

于 2012-08-31T12:42:08.003 に答える
0

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

    }
}
于 2012-08-31T12:42:13.413 に答える