需求:將電腦 A 的文件複製到電腦 B,B 已設置共享權限 Everyone 可讀寫。
string source = @"C:\Data\report.pdf";
string dest = @"\\192.168.1.100\SharedFolder\report.pdf"; // UNC 路徑
// 或映射網絡驅動器後
// string dest = @"Z:\report.pdf";
try {
File.Copy(source, dest, overwrite: true);
Console.WriteLine("複製成功");
} catch (UnauthorizedAccessException) {
Console.WriteLine("權限不足:檢查共享權限/NTFS 權限/防火牆");
} catch (IOException ex) {
Console.WriteLine($"網絡/磁盤錯誤: {ex.Message}");
}
\\IP\ShareName\Path,無需映射驅動器,直接用using (new NetworkConnection(@"\\192.168.1.100", new NetworkCredential("user", "pwd"))) {
File.Copy(source, dest, true);
}
// NetworkConnection 類封裝 WNetAddConnection2/WNetCancelConnection2
FileStream 分塊讀寫 + BufferedStreamrobocopy /Z /R:3 /W:5 系統命令(最健壯)System.Net.WebClient / HttpClient 配合後端上傳 API(跨網段/雲端)| 方案 | 優點 | 缺點 |
|---|---|---|
| File.Copy + UNC | 代碼最少、無依賴、同步阻塞簡單 | 大文件無進度、網絡抖動易失敗、無斷點續傳 |
| robocopy | 系統級、多線程、斷點續傳、帶寬限制、日誌完整 | 需啟動進程、解析輸出、非托管 |
| FTP/SFTP | 跨平台、標準協議、支持認證/權限/斷點 | 需部署服務端 |
| HTTP 上傳 API | 穿透防火牆、易認證授權、可集成業務邏輯 | 需開發後端、Base64/分片上傳複雜 |
內網小文件用 File.Copy,大文件/生產環境上 robocopy 或 HTTP API。