C# 如果要使用FileStream选择一个文件并进行复制,请使用什么文件模式?

C# 如果要使用FileStream选择一个文件并进行复制,请使用什么文件模式?,c#,.net,filestream,C#,.net,Filestream,假设有一个函数 public void UploadSomewhere(FileStream fs) 如果我使用FileStream指向文件路径还不够,我还需要选择FileMode,如果您只是复制/移动文件,我不确定什么是正确的FileMode。有什么想法吗?见 如果您只需要阅读文件,我建议您选择FileMode。打开请参阅 如果您只需要阅读文件,我建议您选择FileMode。如果您只是处理/移动文件,并且您已经知道路径(正如我从问题中了解的那样),那么您根本不需要FieStream。使用Fi

假设有一个函数

public void UploadSomewhere(FileStream fs)
如果我使用FileStream指向文件路径还不够,我还需要选择
FileMode
,如果您只是复制/移动文件,我不确定什么是正确的FileMode。有什么想法吗?

如果您只需要阅读文件,我建议您选择
FileMode。打开

请参阅


如果您只需要阅读文件,我建议您选择
FileMode。如果您只是处理/移动文件,并且您已经知道路径(正如我从问题中了解的那样),那么您根本不需要
FieStream
。使用
File.Move
File.Copy
功能就足够了。

如果您只是处理/移动文件,并且您已经知道路径(正如我从问题中了解的那样),您根本不需要
FieStream
。使用
File.Move
File.Copy
功能就足够了。

如果要复制文件
FileMode。打开
FileAccess.Read

如果要在此过程中共享对文件的访问,请同时指定
FileShare
选项


有关详细信息,请查看。

如果要复制文件
FileMode。请打开
FileAccess。阅读

如果要在此过程中共享对文件的访问,请同时指定
FileShare
选项


查看以获取更多信息。

如果要使用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);
        }

    }
}

如果您想使用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);
        }

    }
}
如果要使用FileStream,只需对源文件使用Open

e、 g

var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
对于目标文件,您必须决定如果它存在会发生什么:

创建将允许您覆盖现有文件,前提是您拥有写入权限

CreateNew将在文件存在时抛出。同样,您需要写入权限

但是,正如其他人所写,您可以完全跳过FileStream并使用File命令

参考资料:

如果要使用FileStream,只需对源文件使用打开即可

e、 g

var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
对于目标文件,您必须决定如果它存在会发生什么:

创建将允许您覆盖现有文件,前提是您拥有写入权限

CreateNew将在文件存在时抛出。同样,您需要写入权限

但是,正如其他人所写,您可以完全跳过FileStream并使用File命令


参考:

如果目标文件已经存在,您想做什么?那么,您想对该文件做什么?如果目标文件已经存在,您想做什么?那么,您想对该文件做什么?如果他必须通过网络套接字(FTP)传输数据,他不能使用
文件
方法。@Scoregraphic:如果他要编写自己的FTP传输实现,他应该使用FtpWebRequest,而不是FileStream。如果他必须通过网络套接字(FTP)传输数据,他不能使用
File
方法。@Scoregraphic:如果他要编写自己的FTP传输实现,他应该使用FtpWebRequest,而不是FileStream。