首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 跨機器文件複製:File.Copy + 共享目錄/UNC 路徑最簡單

     編輯:程式設計綜合問答

需求:將電腦 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}");
}

關鍵點

  • UNC 路徑:\\IP\ShareName\Path,無需映射驅動器,直接用
  • 權限雙重檢查:
    • 共享權限:右鍵文件夾 → 共享 → 權限 → Everyone 讀/寫
    • NTFS 安全性:屬性 → 安全 → 編輯 → Everyone 修改/寫入
  • 防火牆:目標機開放「文件和打印機共享」(TCP 445、139)入站規則
  • 憑證:若非域環境/同賬號,需在代碼中提供憑證:
using (new NetworkConnection(@"\\192.168.1.100", new NetworkCredential("user", "pwd"))) {
    File.Copy(source, dest, true);
}
// NetworkConnection 類封裝 WNetAddConnection2/WNetCancelConnection2

進階:大文件/斷點續傳/進度條

  • FileStream 分塊讀寫 + BufferedStream
  • 或用 robocopy /Z /R:3 /W:5 系統命令(最健壯)
  • 或 System.Net.WebClient / HttpClient 配合後端上傳 API(跨網段/雲端)

替代方案對比

方案優點缺點
File.Copy + UNC代碼最少、無依賴、同步阻塞簡單大文件無進度、網絡抖動易失敗、無斷點續傳
robocopy系統級、多線程、斷點續傳、帶寬限制、日誌完整需啟動進程、解析輸出、非托管
FTP/SFTP跨平台、標準協議、支持認證/權限/斷點需部署服務端
HTTP 上傳 API穿透防火牆、易認證授權、可集成業務邏輯需開發後端、Base64/分片上傳複雜

內網小文件用 File.Copy,大文件/生產環境上 robocopy 或 HTTP API。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved