Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文件从一个目录移动到另一个目录_C#_Directory_Move - Fatal编程技术网

C# 将文件从一个目录移动到另一个目录

C# 将文件从一个目录移动到另一个目录,c#,directory,move,C#,Directory,Move,我用DotNetZip创建了一个zip文件/文件夹。我正在尝试将该文件从原始目录/文件夹移动到另一个目录/文件夹,例如我的文档。到目前为止,我已经做了以下工作,但它给了我一个错误,即它无法找到路径的一部分 private static void Move() { try { Directory.Move(@"Debug\Settings.zip", IO.Paths.Enviroment.MyDocuments); } catch(Exceptio

我用DotNetZip创建了一个zip文件/文件夹。我正在尝试将该文件从原始目录/文件夹移动到另一个目录/文件夹,例如我的文档。到目前为止,我已经做了以下工作,但它给了我一个错误,即它无法找到路径的一部分

private static void Move()
{
    try
    {
        Directory.Move(@"Debug\Settings.zip", IO.Paths.Enviroment.MyDocuments);
    }
    catch(Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}
更新: 所以我玩了一会儿,笑了,不是因为我把它修好了,而是因为它很奇怪。我同时使用了
File.Move()
Directory.Move()
并更改了
两者的.Move(@“Debug\Settings.zip”,…)
两个.Move(@“Settings.zip”,…)
然后出现一个错误,说明
无法创建文件,而该文件已经存在。


虽然用它来移动文件似乎很奇怪(我会用它来代替),但指出它会起作用

问题在于路径
Debug\Settings.zip

所有相对路径都是相对于工作目录的。默认情况下,工作目录是执行程序集(程序)的文件夹,调试时,它是项目的
bin\Debug
子文件夹。因此,您的路径
Debug\Settings.zip
被扩展为如下路径:

C:\..\MyProject\bin\Debug\Debug\Settings.zip
这可能不是你的意思。你的意思是“Settings.zip”


它是一个ZIP的事实是不相关的。

找不到部分路径
-错误似乎是文件
设置的
相对路径。ZIP
不是有效路径


您需要使用
File.Move
Directory.Move
将目录的全部内容移动到不同的文件夹

File.Move
:仅将文件移动到指定位置

private static void Move()
        {
            try
            {
                File.Move(@"Debug\Settings.zip", System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

使用System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)获取MyDocuments路径。

修复!问题首先是
“Debug\Settings.zip”
应该是
“Settings.zip”
@“Settings.zip”
,最后的目标不应该仅仅是
System.IO.File.Move(@“Settings.zip”、System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop))
but
System.IO.File.Move(@“Settings.zip”、System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop)+@“\Settings.zip”)
基本上,在目标字符串的末尾添加文件名和文件扩展名。

这当然不是特定于zip文件。根据官方文档。Directory.Move处理文件:我不知道。现在我的问题是:当
目录时,为什么要使用
文件.Move
。Move
已经可以做任何你想做的事情了?因为使用Directory.Move,当你只想移动一个文件时,可能会意外地移动整个目录。所以File.Move可以防止人为错误。@Jean-PhilippeLeclerc-你能不小心解释一下吗?你知道,当“你不小心把整件事都弄糟了”的时候。假设您有一些生成文件路径的代码,但由于您的algo错误,最终生成的路径是一个目录。在这种情况下,您希望程序抛出异常,而不是移动您的目录。+1我认为这应该是正确的答案,因为directory.move也可以处理文件。-1:问题不在于我的文档路径。首先,他从我们都不知道的某个位置(
path.environment.MyDocuments
)获取它,它可能是一个字符串,否则它将无法工作。其次,另一个参数有问题。@Virtlink字符串
path.Environment.MyDocuments
System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments
),我只是通过创建自己的Environment类,用一个返回MyDocuments路径lol的静态字符串。另一部分
@"Debug\Settings.zip
指的是visual studio项目的调试文件夹。在我压缩的调试文件夹中有一个名为Settings的文件夹。我只是想将压缩的文件夹移动到另一个位置,在这种情况下,它将是我的文档。显然,它还将移动文件:P@Virtlink-它们之间的唯一区别是,文件.Move无法处理目录移动操作!@AppDeveloper,@Virtlink我一直在争论.zip是一个文件还是一个文件夹…我认为它应该是一个“目录”,因为从技术上讲它是一个包含文件夹和文件的文件夹,但有些人将.zip称为文件。所以我使用了
directory.Move()
并尝试了它。但就相对路径而言。我尝试了
目录
文件
,但当我知道它在那里时,它似乎没有看到
设置。zip
文件夹/文件,因为我现在正在查看它。哈哈。@iwatakeshi-你能给我们看一个保存应用程序的目录树的屏幕快照吗?@iwatakeshi-zip不是一个目录,它是一个文件,你可以把它想象成ISO文件,安装程序,他们有一捆文件!