0

libNunrar サイト.rarを使用してファイルを抽出しました。

RarArchive.WriteToDirectory(fs.Name, Path.Combine(@"D:\DataDownloadCenter", path2), ExtractOptions.Overwrite);

解凍は正常に機能しますが、この抽出操作の後、元の圧縮ファイルを削除できません

System.IO.File.Delete(path);

ファイルが別のプロセスで使用されているため 、ホール関数:

 try
           {
               FileStream fs = File.OpenRead(path);
               if(path.Contains(".rar")){

                   try
                   {
                       RarArchive.WriteToDirectory(fs.Name, Path.Combine(@"D:\DataDownloadCenter", path2), ExtractOptions.Overwrite);
                       fs.Close();

                   }
                   catch { }

                   }

           catch { return; }
           finally
           {
               if (zf != null)
               {
                   zf.IsStreamOwner = true; // Makes close also shut the underlying stream
                   zf.Close(); // Ensure we release resources
               }
           }
           try
           {
               System.IO.File.Delete(path);
           }
           catch { }

解凍後に圧縮ファイルを削除できますか?

4

2 に答える 2

1

何があるかはわかりませんが、それをステートメントzfでラップすることもできます。これにあなたの部品をusing交換してみてくださいFileStream fs

using( FileStream fs = File.OpenRead(path))
{
    if(path.Contains(".rar"))
    {
        try
        {
           RarArchive.WriteToDirectory(fs.Name, Path.Combine(@"D:\DataDownloadCenter", path2), ExtractOptions.Overwrite);
        }
        catch { }
     }
}

が含まれていなくても、この方法fsは閉じられています。ファイル名内に存在する場合のみを閉じています。path.rarfsrar

また、ライブラリには独自のストリーム処理がありますか? それを閉じるメソッドを持つことができます。

于 2013-07-04T10:52:12.993 に答える