2016-04-07 50 views
0

當我試圖從遠程計算機的本地複製現有的文件,C#File.Copy從遠程計算機到本地

File.Copy(
string.Format(@"\\{0}\e$\{1}", computerName, fileName), 
string.Format(@"{0}\{1}\{2}", localPath, computerName, fileName), 
true); 

我得到的異常Could not find part of the path "\\computername\e$\filename"。我檢查了路徑,它是正確的。

我不認爲這是一個權限問題,因爲我可以達到與Directory.GetFiles文件,我可以獲得信息像文件大小或最後寫作日期FileInfo,此外,當我從cmd執行xcopy命令具有相同的路徑代碼他成功複製文件。

任何人都可以幫助我瞭解我做錯了什麼或其他方式來複制文件?

+0

您是以用戶身份還是從網頁服務運行該文件副本? – BugFinder

+0

@BugFinder我正在c#console項目中運行文件複製,所以以用戶身份運行。 –

+0

您可以嘗試使用「網絡使用」。與驅動器連接後,您可以複製文件。 – naro

回答

0

從遠程位置拷貝到遠程位置不是通過使用正常的File.Copy來完成的,因爲如果文件保存在本地HDD上或者它們可以通過網絡訪問,則會有所不同。其他社區成員已經制定了一些解決方案。最簡單的一個可能是這樣的:

How to provide user name and password when connecting to a network share

另一種解決方案是在這個線程provied:

Copying a file to a network share i dont have access to

你需要找出最適合您的。重要的是要提到,如果您跳過模擬,您的程序可能無法從任何地方和任何人運行。這可以防止用戶無法正常工作。

+0

其實正常的file.copy確實可以解決問題 - 我只是做了。 – BugFinder

+0

我把這一切當回事:)我記得我曾經必須這樣做,並沒有得到它沒有這些專業方式的工作。但是如果可以實現更輕鬆的話,爲什麼不堅持呢? – prizm1

+0

我認爲有些時候它可能不起作用 - 例如,如果你沒有去過那個UNC,那麼你可能沒有驗證你的連接,並且它可能會使複製失敗,但是,只要你的PC和遠程服務器先前已經討論過這,它會工作..但是,我認爲OP的問題更簡單。 – BugFinder

0

我發現File.Copy不會創建給定的目標文件夾,如果它不存在,不像xcopy命令。這讓我感到困惑,因爲我認爲如果cmd命令創建了dir,Copy方法可以管理這種情況。此外,異常消息指定源路徑錯誤而不是目標路徑。

所以要解決這個問題:

localPath = Path.Combine(localPath, computerName); 
if (!Directory.Exists(localPath)) 
{ 
    Directory.CreateDirectory(localPath); 
} 
File.Copy(
string.Format(@"\\{0}\e$\{1}", computerName, fileName), 
Path.Combine(localPath, fileName), 
true); 

我對我不是那麼好英語和分心道歉。

感謝您的幫助。

相關問題