2009-04-03 9 views
2

サーバ\\abc\\C$\\temp\\coll.zipから別のサーバにファイルを移動しようとしています \\def\\c$\\tempfile.copy()を使用してzipファイルを移動する

File.Copy(source,destination)を使用しようとしています。 ソースパスにエラーが表示されています:Couldn't find the part of the path.

ソースパスに何が問題なのかよくわかりません。

+0

あなたはいくつかのコードが含まれてもらえますか?バックスラッシュをエスケープしていない可能性があります。 – Keltex

答えて

5

を支援します。

string source = @"\\abc\C$\temp\coll.zip"; 
string destination = @"\\def\c$\temp\coll.zip"; 
string destDirectory = Path.GetDirectoryName(destination) 
if (File.Exists(source) && Directory.Exists(destDirectory)) { 
    File.Copy(source, destination); 
} 
else { 
    // Throw error or alert 
} 
+0

ファイルがまだターゲットの場所に存在しない場合、これは無効です。検証するにはDirectory.Exists(宛先)を使用する必要があります。 –

+0

私は少し速かった、それを指摘してくれてありがとう。 –

3

あなたは初めに2つのバックスラッシュ必要があるように見えます:

  • \\ ABC \ C $ \一時\のcoll.zip
  • \\ DEF \ C $ \ TEMP
5

メイクをC#を使用している場合は、 "\"文字がエスケープされていることを確認してください。あなたはこのように、@と文字列リテラルをバックスラッシュを二重またはプレフィックスする必要があります。

string fileName = @"\\abc\C$\temp\coll.zip";

または

string fileName = "\\\\abc\\C$\\temp\\coll.zip";

+0

最初のバックスラッシュを2倍にすることを強くお勧めします。 @ "\\ abc \ C $ \ ..." –

+0

右のジョンは誰かが投稿を再フォーマットしたときに削除されました。 –

+0

SOエディターでは、ファンキーなエスケープがあります。 –

0

それはあなたがパスに使用している文字列である可能性があります。あなたがここに入力したのとまったく同じ場合、ダブルバックスラッシュが必要です。サーバー名の前に "\\"を付けます。

0

私は常にその種の作業にネットワーク共有を使用しますが、UNCパスも使用できるはずです。

\を使用するときに文字列をエスケープする必要があることを忘れないでください。また、ほとんどの場合、UNCパスは二重で始まります。

例:

\\MyComputerName\C$\temp\temp.zip 
0

実は私は2人のstrings.Theの送信元と送信先のパスの前に@逃しました。 それがエラーを出す理由です。

2

有効なUNCパスを使用していることを確認してください。 UNCパスは\で始まらなければなりません。 System.IO.File.Exists(ファイル名);コピーを試みる前にを実行してください。そうすれば、例外を完全に避けることができ、アプリは不足しているファイルを正常に処理できます。

・ホープこれはあなたが逐語@のC#を使用しても、このようなコードにチェックを使用することができます

関連する問題