【问题标题】:C#.NET file.copy directory pathC#.NET file.copy 目录路径
【发布时间】:2014-11-08 03:07:08
【问题描述】:

首先要了解这个问题的几个先决条件。我不是母语人士,我今天开始学习 C#,几乎没有任何编程知识,我想编写 Windows 窗体程序,它将我包含在程序中的文件(图形资产)复制到另一个程序目录中的某些文件夹(更准确地说,我想通过单击一个按钮来修改图形资产,然后能够将它们改回来)。我做了我的研究,我知道我应该使用 File.Copy 方法我只有一个关于我找到的代码的问题:

static void Main()
{
    string fileName = "test.txt";
    **string sourcePath = @"C:\Users\Public\TestFolder";
    string targetPath =  @"C:\Users\Public\TestFolder\SubDir";**

    // Use Path class to manipulate file and directory paths.
    string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
    string destFile = System.IO.Path.Combine(targetPath, fileName);

我知道这不是完整的代码,但这是我想问的部分。我可以像这样定义 sourcePath 和 targetPath,例如:“./folder/folder2/”吗?基本上,我希望我的程序假定它位于另一个软件的“正确目录”中,并且我不想指定该目录的完整路径。换句话说,我的程序是否知道它当前在哪个目录中,如果没有,我该如何让它知道?我希望我的措辞正确。感谢您的帮助。

【问题讨论】:

    标签: c# path directory copy-paste


    【解决方案1】:

    您可以提供 I/O 操作的相对路径,默认路径是 Environment.CurrentDirectoy 值,主要是您的 Windows 窗体可执行文件所在的目录。

    请注意,您的路径中不需要 ./ 起点,File.Copy("FileA.txt", "FileA_1.txt") 将在 Environment.CurrentDirectory 中查找这些位置。

    【讨论】:

    • 非常感谢。一旦我获得这样做所需的声誉,我会立即支持您的评论。
    • @Forc3ofWill 没问题。我在这里的目标是帮助你,声誉是次要的;)
    • 我有后续问题。所以你是说 I/O 操作的默认路径是 Environment.CurrentDirectoy 这意味着我不必将该值放入我的代码中,对吗?此外,我的路径中不需要 ./ 起点,但是如果我要复制的文件不在我的程序所在的确切文件夹中怎么办?例如 Folder1/Folder2/FileA.txt ?
    • @Forc3ofWill 是的,你是对的。关于深度路径...是的,显然您需要指定从CurrentDirectory开始的文件的相对路径@
    • @Forc3ofWill 现在我不确定 File.Copy 是否支持通配符。例如“**\File.txt”(递归路径)
    【解决方案2】:

    为确保您指的是应用程序的路径,您可以使用:

    string exePath = System.IO.Path.GetDirectoryName(
    System.Reflection.Assembly.GetEntryAssembly().Location);
    

    AppDomain.CurrentDomain.BaseDirectory

    请记住验证您要引用的目录是否存在,否则您可能会收到DirectoryNotFoundException

    【讨论】:

    • 非常感谢。一旦我获得这样做所需的声誉,我会立即支持您的评论。
    猜你喜欢
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 2019-11-27
    • 2010-11-25
    • 1970-01-01
    相关资源
    最近更新 更多