zipfile の内容を SD カードに抽出する必要があります。
ZipFile.ExtractToDirectory(@"D:\RcCardData.zip", this.selectedDrive);
魅力のように機能します。ただし、これがディスクの書き込みキャッシュを使用するかどうかは疑問でした。はいの場合、カードを削除できることをユーザーに伝える前に、すべてのデータがカードに書き込まれていることを確認する方法はありますか?
最初に、コードを使用して SD カードを「安全に取り外す」ことを試みましたが、ここでの問題は、カードだけでなく、USB カードリーダー全体を取り出すことでした。
アップデート
この件について、追加の調査を行いました。
ExtractToDirectory
via dotPeekのコードを見ると、次のメソッドに要約されます。
public static void ExtractToFile(this ZipArchiveEntry source, string destinationFileName, bool overwrite)
{
if (source == null)
throw new ArgumentNullException("source");
if (destinationFileName == null)
throw new ArgumentNullException("destinationFileName");
FileMode mode = overwrite ? FileMode.Create : FileMode.CreateNew;
using (Stream destination = (Stream) File.Open(destinationFileName, mode, FileAccess.Write, FileShare.None))
{
using (Stream stream = source.Open())
stream.CopyTo(destination);
}
File.SetLastWriteTime(destinationFileName, source.LastWriteTime.DateTime);
}
また、using ブロックを終了するときにストリームに対して Dispose() が実行されるため、ストリームはClose()
-d およびFlush()
-ed です。
フラッシュを実行すると書き込みキャッシュが空になるので、最近どこかで読んだことが.Net 4.0
あります(これについてはわかりません)?
上記の追加情報を使用して、抽出が完了したときに SD カードを安全に取り外すことができるかどうか教えてもらえますか?