我需要将zip文件的内容提取到SD卡。
ZipFile.ExtractToDirectory(@"D:\RcCardData.zip", this.selectedDrive);
像魅力一样工作。 但是我想知道这是否使用了磁盘的Write-cache。 如果是,是否有办法确保在告诉用户他可以删除卡之前将所有数据写入卡中?
起初我尝试使用代码来“安全删除”SD卡,但问题在于它是弹出整个USB读卡器而不仅仅是卡。
更新
我已就此事做了一些额外的研究。
通过 dotPeek 查看ExtractToDirectory
的代码时,可归结为以下方法:
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);
}
由于在退出使用块时在流上执行Dispose(),因此流为Close()
- d和Flush()
- ed。
现在我最近读过某个地方,因为.Net 4.0
执行刷新时写入缓存被清空(不确定)?
根据上面提供的额外信息,有人可以告诉我在提取完成后是否可以安全地移除SD卡?