2016-07-28 5 views
1

別のフォルダにコピーした後にzipファイルを削除する方法...削除中に例外が発生しました。「ファイルが別のプロセスで使用されています。あなたはZIPファイルを解凍した場合別のフォルダにコピーした後にZipファイルを削除する方法

string pathString1 = FullFilePath; 
string sourceFileName = Path.GetFileName(pathString1); 
string foldername = Path.GetDirectoryName(pathString1); 
string pathString = Path.Combine(foldername, "Uploaded"); 
if (!System.IO.Directory.Exists(pathString)) 
{ 
    System.IO.Directory.CreateDirectory(pathString); 
    string destFile = System.IO.Path.Combine(pathString, sourceFileName); 
    File.Copy(pathString1, destFile); 

    File.Delete(pathString1); 
    File.Delete(FileName); 
} 
+1

あなたが仕事に使っているコードを提供し、再試行して終了するのを待って、再試行してくださいファイルと一緒に。 –

+0

ヘルプを入手しようとしたコードを表示してください。 –

+0

ファイルを読むために使用しているストリームを閉じる必要があります。あなたのコードが見えたら、私たちは助けてくれるでしょう。 –

答えて

2

、その後、使用してブロックまたは.Dispose()解凍する責任があるオブジェクトでこれを行います。あなたは何のlibを使っていますか?

2

ファイルのロックを防止するために、操作で行うのファイルを解放しますusing声明:あなたはファイルを削除している場合は、なぜ、それをコピーした直後に、再び

using (FileStream stream = File.Open("path to file", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) 
{ 
    ... 
} 

それを動かすだけではない?ウイルスチェッカーは、あなたの.zipファイルに入っていることをこの理論があるので

File.Move(from, to); 
+0

が試しましたが、同じ例外があります。別のプロセスで使用されています.. – Pinky

0

、あなたは可能性があり、それは

string pathString1 = FullFilePath; 
string sourceFileName = Path.GetFileName(pathString1); 
string foldername = Path.GetDirectoryName(pathString1); 
string pathString = Path.Combine(foldername, "Uploaded"); 
if (!System.IO.Directory.Exists(pathString)) 
{ 
    System.IO.Directory.CreateDirectory(pathString); 
    string destFile = System.IO.Path.Combine(pathString, sourceFileName); 
    File.Copy(pathString1, destFile); 

    int itries = 0; 
    int maxtries = 30; //suitable time of retrying 
    while (itries++ < maxtries) 
    { 
     try 
     { 
      File.Delete(pathString1); 
      itries = 999999; 
     } 
     catch (Exception ex) 
     { 
      if (itries > maxtries) throw ex; 
      Thread.Sleep(1000); 
     }  

    } 

    //File.Delete(FileName); 
} 
関連する問題