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

对于目标文件,您必须决定如果它存在会发生什么:

如果您拥有写入权限,则Create将允许您覆盖现有文件。

如果文件存在, 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 回答