可以說是有功能如果我想使用FileStream選擇文件並創建副本,那麼FileMode是什麼?
public void UploadSomewhere(FileStream fs)
如果我使用的FileStream它不足以指向的文件路徑,我也需要選擇FileMode
和林不知道是什麼,如果你只是複製正確的FileMode /移動文件。有任何想法嗎?
可以說是有功能如果我想使用FileStream選擇文件並創建副本,那麼FileMode是什麼?
public void UploadSomewhere(FileStream fs)
如果我使用的FileStream它不足以指向的文件路徑,我也需要選擇FileMode
和林不知道是什麼,如果你只是複製正確的FileMode /移動文件。有任何想法嗎?
如果你想使用的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
見http://msdn.microsoft.com/en-us/library/system.io.filemode.aspx
如果你只需要讀取這個文件,我建議FileMode.Open
如果你只是應對/移動文件,你已經知道的路徑(像我一樣從理解問題),你根本不需要FieStream
。足夠使用File.Move
或File.Copy
函數。
如果他必須通過網絡套接字(FTP)傳輸數據,他不能使用「文件」方法。 – Scoregraphic
@Scoregraphic:如果他要寫它自己的FTP傳輸實現,他應該使用FtpWebRequest,而不是FileStream。 – Tigran
如果你想使用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);
}
}
}
如果目標文件已經存在,您想要做什麼? – itsmatt
那麼,你想用這個文件做什麼? http://msdn.microsoft.com/en-us/library/system.io.filemode –