2011-04-12 105 views
2

我正在將文件從一個文件夾移動到另一個文件夾。如果我嘗試將整個文件夾移動到該特定文件夾內的文件夾,我無法做到這一點。但如果我將它移到外面,它工作正常。如何將我的文件夾移動到該文件夾​​內的文件夾?c#文件移動(文件已被其他進程使用)

這給了錯誤

if (System.IO.Directory.Exists(PhysicalPath)) 
{ 
     string sourcePath = "c:\\copypath\\"; 
     string targetPath = "c:\\copypath\\abc\\"; 
     System.IO.Directory.Move(sourcePath, targetPath); 
} 

這工作得很好

if (System.IO.Directory.Exists(PhysicalPath)) 
{ 
     string sourcePath = "c:\\copypath\\"; 
     string targetPath = "c:\\abc\\"; 
     System.IO.Directory.Move(sourcePath, targetPath); 
} 
+0

所以你想在你的文件夾中的文件夾,所以你可以文件夾,而你的文件夾? – TJHeuvel 2011-04-12 10:05:27

+1

「這給出錯誤」:什麼樣的錯誤? – khachik 2011-04-12 10:09:03

回答

5

試圖將「c:\ copypath \」改成「c:\ copypath \ abc \」將不起作用,因爲它沒有意義。

如果您移動副本路徑文件夾,那麼它將不再存在,那麼目標文件夾(它是哪個子文件夾)將如何存在?

您可以將「c:\ copypath \」的所有子文件移動到「c:\ copypath \ abc \」中,而不會導致問題(再次假設您不嘗試複製abc本身)。

+0

+ +1來解釋OP的方法的無意義。 「移動」的整個要點是移動後存在的原始目錄路徑STOPS。也許你可以更新你的答案來定義「移動」實際上是什麼。另外,OP不應將此操作期間使用的空間加倍,而應創建子目錄並將文件和子文件夾移動到新的子文件夾。 – bitxwise 2011-04-12 10:25:16

2

它扔掉的錯誤,因爲你正試圖在自己的子目錄移動目錄。這會給出錯誤的窗口,以及...

你可以做到這一點作爲替代,如果你試圖複製而不是移動...

if (System.IO.Directory.Exists(PhysicalPath)) 
{ 
     string sourcePath = "c:\\copypath\\"; 
     string targetPath = "c:\\copypath\\abc\\"; 
     System.IO.Directory.Copy(sourcePath, targetPath); 
} 
+3

有點像兔子試圖通過耳朵 – tobias86 2011-04-12 10:15:28

0

我猜的源路徑將是使用(複製文件)並且由於目標路徑是源路徑的子文件夾,它可能會給你「當前由另一個進程錯誤使用」。

1

也許你需要移動文件夾內的所有文件,而不是文件夾本身?

相關問題