public bool WriteDirectory(string path, bool deleteOnComplete)
{
if (LogManager != null) {
LogManager.DebugFormat("Writing directory: path=\"{0}\", DeleteOnComplete={1}", path, deleteOnComplete);
}
if (!_IsOpened && !(Access == FileAccess.ReadWrite || Access == FileAccess.Write)) {
return false;
}
if (!Directory.Exists(path)) {
return false;
}
string[] files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
string importFile;
int fNum = 1;
foreach (string file in files) {
importFile = file.Replace(path, string.Empty);
if (importFile[0] == '\\') {
importFile = importFile.Substring(1);
}
using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read)) {
if (!_WriteStream(fs, FileHash(importFile))) {
return false;
}
}
OnFileWrited(fNum, files.Length);
fNum++;
}
if (!WriteMapFile()) {
return false;
}
if (deleteOnComplete) {
try {
Directory.Delete(path, true);
} catch {
}
}
return true;
}