2017-04-25 296 views
0

我對C#很新,我試圖讓我的程序將文件從一個位置複製到另一個位置。我的方法如下:將文件從一個目錄複製到另一個目錄

private void CopyInstallFiles(object sender, EventArgs e) 
    { 
     string sourceFile = "F:\\inetpub\ftproot\test.txt"; 
     string copyPathone = directoryImput.Text; 
     System.IO.File.Copy(sourceFile, copyPathone); 
    } 

,你可以是有一個固定的源位置然而目的地從用戶輸入(文本框)服用。但是我遇到的問題是,當我嘗試複製到例如C:\ testfolder的位置時。我收到一個非法字符的例外。

+1

'\ t '被翻譯成製表符(從'F:\\ inetpub \ ftproot \ test.txt') – fubo

回答

3

File.Copy需要爲目標的完整文件名。

destFileName
類型:System
目標文件的名稱。這不能是一個目錄。

如果您的輸入只是文件夾名稱,那麼您需要添加源文件的文件名。

private void CopyInstallFiles(object sender, EventArgs e) 
{ 
    // The correct syntax for a path name requires the verbatim @ char 
    string sourceFile = @"F:\inetpub\ftproot\test.txt"; 
    string file = Path.GetFileName(sourceFile); 
    string copyPathone = directoryImput.Text; 
    System.IO.File.Copy(sourceFile, Path.Combine(copyPathone, file), true); 
} 

注意final參數= true覆蓋目標文件夾中的文件。

作爲一個方面說明,我建議你刪除文本框中輸入一個文件夾名稱,而是使用FolderBrowserDialog

4

看看你的sourceFile字符串,並注意使用\,這可能會被解釋爲escape character

爲了防止這種啓動字符串@

string sourceFile = @"F:\inetpub\ftproot\test.txt"; 

string sourceFile = "F:\\inetpub\\ftproot\\test.txt"; 
0

試試這個:

string path = @"C:\Program Files (x86)\your\path\main.txt"; 
0

這是因爲C#(和C++和C和一些其他語言)的字符串可以包含特殊字符。這些字符後跟'\'。因此,例如字符串:

"\n" 

不會顯示你\ n這就是所謂的特殊字符 - 新的生產線。所以,當你創建如下路徑:

"C:\Dir\file.txt" 

C#預計有兩個特殊字符:\ D和\ f。但是沒有像這樣的特殊字符。因此錯誤。

爲了把字符 '\' 轉換爲字符串,你必須增加一倍,所以:

"\\n" 

將輸出\ n

同樣是與路徑:「C:\迪爾\文件.txt「

C#有一個選擇。您可以在路徑有單個「\」,但這樣的字符串必須在標誌後跟(@):

string properPath = @"C:\dir\file.txt"; 
string properPath2 = "C:\\dir\\file.txt"; 
string error = "C:\dir\file.txt" 
0

要麼FIle.Copy 它移動到新位置,像下面

new_file_path = file_path.Replace(".xls", " created on " + File.GetLastWriteTime(file_path).ToString("dd-MM-yyyy hh-mm-ss tt") + ".xls"); 
         File.Move(file_path, new_file_path); 
         File.Delete(file_path); 
+0

新的文件路徑可以是另一個目錄的地址 – Saurabh

相關問題