2013-02-22 325 views
2

我使用DotNetZip創建了一個zip文件/文件夾。我試圖將該文件從原始目錄/文件夾移到另一個文件夾,例如我的文件。到目前爲止,我已經完成了以下工作,但它給了我一個錯誤,說它找不到路徑的一部分。將文件從一個目錄移動到另一個目錄

private static void Move() 
{ 
    try 
    { 
     Directory.Move(@"Debug\Settings.zip", IO.Paths.Enviroment.MyDocuments); 
    } 
    catch(Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 

UPDATE: 所以,我已經打了它一下,笑了起來,不是因爲我固定的,而是因爲它的怪異。我用兩個File.Move()Directory.Move(),改變both.Move(@"Debug\Settings.zip",...);both.Move(@"Settings.zip",...);然後得到得到一個錯誤說Cannot create a file when that file already exists.

Directory Tree

+2

這當然不是特定於zip文件。 – wRAR 2013-02-22 01:35:10

回答

2

雖然它可能看起來很奇怪使用Directory.Move移動文件,(我使用File.Move代替) ,Jean-Philippe Leclerc指出它會起作用。

問題是與路徑Debug\Settings.zip

所有的相對路徑是相對於工作目錄。默認情況下,工作目錄是程序集(您的程序)在其中執行的文件夾,並且在您的項目的bin\Debug子文件夾中調試。所以,你的路徑Debug\Settings.zip擴展到像一個路徑:

C:\..\MyProject\bin\Debug\Debug\Settings.zip 

這可能不是你的意思。你的意思只是"Settings.zip"

這是一個ZIP的事實是無關緊要的。

+0

+1。大聲笑,很好的地方。 – 2013-02-22 01:36:59

+3

根據官方文件。 Directory.Move使用文件:http://msdn.microsoft.com/en-us/library/system.io.directory.move.aspx – 2013-02-22 01:39:49

+0

不知道。現在我的問題是:爲什麼當'Directory.Move'已經做了你想要的任何東西時都要使用'File.Move'? – Virtlink 2013-02-22 01:46:07

1

could not find part of the path - 該錯誤看起來像您的文件Relative PathSettings.Zip是不是一個有效的路徑!


您需要使用File.MoveDirectory.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); 
      } 
     } 
+0

好,顯然['Directory.Move'](http://msdn.microsoft.com/en-us/library/system.io.directory.move.aspx)也會移動文件。 :P – Virtlink 2013-02-22 01:48:23

+0

@Virtlink - 是的,只是檢查了傻傻的微軟。 – 2013-02-22 01:49:13

+0

@Virtlink - 它們之間的唯一區別是,File.Move無法處理目錄移動操作! – 2013-02-22 01:49:42

1

使用System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)讓你的我的文檔路徑。

+0

+1,因爲其他兩個答案都包含了你的答案。 – 2013-02-22 01:41:12

+0

+1我認爲這應該是正確的答案,因爲Directory.Move也適用於文件。 – AbZy 2013-02-22 01:46:06

+0

-1:問題不在於我的文檔路徑。首先,他從我們都不知道的某個位置獲得它('Paths.Enviroment.MyDocuments'),它可能是一個字符串,否則它將無法工作。其次,問題在於另一個論點。 – Virtlink 2013-02-22 01:47:26

0

固定!問題首先是"Debug\Settings.zip"應該是"Settings.zip"@"Settings.zip",最終目標不應該只是System.IO.File.Move(@"Settings.zip", System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop));而是System.IO.File.Move(@"Settings.zip", System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) + @"\Settings.zip");基本上,在目標字符串的末尾添加文件名和文件擴展名。

相關問題