【问题标题】:Copy a file into a created directory将文件复制到创建的目录中
【发布时间】:2015-01-11 13:00:03
【问题描述】:

我正在处理一个项目,我希望根据文本字段值生成一个目录,并且我想将一个文件复制到创建的文件夹中......到目前为止,我可以创建目录并复制文件但进入创建的文件夹....

try
{
    string id = textBox4.Text.Trim();
    // Directory.CreateDirectory("C:\\Users\\prashan\\Desktop\\"+id);
    string source = null;                 

    OpenFileDialog ofd = new OpenFileDialog();

    if (ofd.ShowDialog()==System.Windows.Forms.DialogResult.OK)
    {
        source = ofd.FileName;
        MessageBox.Show(source);
    }

    string File_name = Path.GetFileName(source);

    string destination = "C:\\Users\\prashan\\Desktop\\" +
        System.IO.Directory.CreateDirectory(id) + File_name;

    System.IO.File.Copy(source, destination);
    MessageBox.Show("Done....");
}
catch (Exception ex)
{
    MessageBox.Show(ex.StackTrace);
}  

【问题讨论】:

  • 那么,有什么问题呢?我在您的帖子中没有看到任何实际问题..?

标签: c# winforms file-io


【解决方案1】:

你有以下代码:

string destination = "C:\\Users\\prashan\\Desktop\\" 
    + System.IO.Directory.CreateDirectory(id) + File_name;

您将 CreateDirectory() 的结果连接到您的目标文件名,这是不正确的。相反,您可以将其拆分为两个操作,如下所示:

System.IO.Directory.CreateDirectory("C:\\Users\\prashan\\Desktop\\" + id);
string destination = "C:\\Users\\prashan\\Desktop\\" + id + "\\" + File_name;

这不是最干净的方法,使用 Path.Combine() 会更好,但我想尽可能少地更改您的代码。

【讨论】:

  • 但我认为这是完整路径,而不是单个目录名,不是吗?可能destination = Path.Combine(System.IO.Directory.CreateDirectory("C:\\Users\\prashan\\Desktop\\" + id), File_name) 会是一个更好的例子。
  • 是的,那是最好的。但我怀疑那是一条完整路径,因为 MSDN 说“原始路径”,并且在上面的代码中是 id = textbox.Text。我感觉到短名称,而不是完整路径,但这只是猜测。我在第一条评论中的意思是 CreateDirectory() 的结果可以连接到路径,所以我认为你可以让 incorrect 更柔和一些。
【解决方案2】:

代码中的小改动。修改了目标路径以使其成为有效路径。

try
        {
            string id = textBox4.Text.Trim(); 
            Directory.CreateDirectory("C:\\Users\\prashan\\Desktop\\"+id);
            string source = null;
            OpenFileDialog ofd = new OpenFileDialog();

            if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                source = ofd.FileName;
                MessageBox.Show(source);

            }

            string File_name = Path.GetFileName(source);

            string destination = "C:\\Users\\prashan\\Desktop\\" + id +"\\"+ File_name;


            System.IO.File.Copy(source, destination);
            MessageBox.Show("Done....");

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.StackTrace);
        }

【讨论】:

  • 谢谢。已添加说明。
猜你喜欢
  • 2021-11-27
  • 1970-01-01
  • 2021-06-28
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多