我对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。我得到了一个非法的字符异常。
答案 0 :(得分:4)
查看您的sourceFile
字符串,并注意使用\
,可以将其解释为escape character。
要阻止此操作,请使用@
string sourceFile = @"F:\inetpub\ftproot\test.txt";
或
string sourceFile = "F:\\inetpub\\ftproot\\test.txt";
答案 1 :(得分:3)
File.Copy需要目标的完整文件名。
destFileName
类型:System.String
目标文件的名称。这不能是目录。
如果您的输入只是文件夹名称,则需要添加源文件的文件名。
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);
}
注意最后一个参数= true以覆盖目标文件夹中的文件。
作为旁注,我建议你删除文本框作为文件夹名称的输入,而是使用FolderBrowserDialog
答案 2 :(得分:0)
试试这个:
string path = @"C:\Program Files (x86)\your\path\main.txt";
答案 3 :(得分:0)
这是因为在C#(和C ++和C以及其他一些语言)中,字符串可以包含特殊字符。这些字符后跟'\'。例如,字符串:
"\n"
不会显示 \ n 这是一个名为 - new line的特殊字符。所以,当你创建这样的路径时:
"C:\Dir\file.txt"
C#期望有两个特殊字符:\ D和\ f。但是没有像这样的特殊人物。因此错误。
要将字符“\”放入字符串中,您必须将其加倍,所以:
"\\n"
会输出 \ n
路径也一样:“C:\ Dir \ file.txt”
C#有另一种选择。你可以在路径中使用单个'\',但是这样的字符串必须后跟at符号(@):
string properPath = @"C:\dir\file.txt";
string properPath2 = "C:\\dir\\file.txt";
string error = "C:\dir\file.txt"
答案 4 :(得分: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);