2012-08-31 15 views
0

可以說是有功能如果我想使用FileStream選擇文件並創建副本,那麼FileMode是什麼?

public void UploadSomewhere(FileStream fs) 

如果我使用的FileStream它不足以指向的文件路徑,我也需要選擇FileMode和林不知道是什麼,如果你只是複製正確的FileMode /移動文件。有任何想法嗎?

+0

如果目標文件已經存在,您想要做什麼? – itsmatt

+0

那麼,你想用這個文件做什麼? http://msdn.microsoft.com/en-us/library/system.io.filemode –

回答

1

如果你想使用的FileStream你可以簡單地使用打開源文件。

例如,

var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read); 

對於你必須決定,如果它存在,會發生什麼的目標文件:

創建將讓您覆蓋現有文件,如果你有權限。

創建新的將拋出,如果文件存在。再次,您需要寫入權限。

但是,正如其他人所寫,您可以完全跳過FileStream並使用File命令。

參考:http://msdn.microsoft.com/en-us/library/system.io.filemode.aspx

1

如果你只是應對/移動文件,你已經知道的路徑(像我一樣從理解問題),你根本不需要FieStream。足夠使用File.MoveFile.Copy函數。

+0

如果他必須通過網絡套接字(FTP)傳輸數據,他不能使用「文件」方法。 – Scoregraphic

+0

@Scoregraphic:如果他要寫它自己的FTP傳輸實現,他應該使用FtpWebRequest,而不是FileStream。 – Tigran

0

如果您要複製文件FileMode.OpenFileAccess.Read

如果您想在此過程中共享文件訪問權限,請指定FileShare選項。

查看MSDN瞭解更多信息。

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

    } 
} 
相關問題