将文件从一个目录复制到另一个目录

时间:2017-04-25 08:24:36

标签: c# c#-4.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。我得到了一个非法的字符异常。

5 个答案:

答案 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);