public bool open(string fullFileName, eFileMode mode,
bool createFile, bool silens, eFileAccess access,
bool withDialog, bool canOpenOther)
{
bool exists = false;
close();
if (fullFileName.Length > 0)
{
FileInfo fi = new FileInfo(fullFileName);
exists = (fi.Exists);
}
else
{
fullFileName = " ";
exists = false;
}
if ((!exists && !createFile) || withDialog)
{
exists = fileExists(m_curPath + Path.DirectorySeparatorChar + getFileName(fullFileName));
if (exists && !withDialog)
{
fullFileName = m_curPath + Path.DirectorySeparatorChar + getFileName(fullFileName);
}
else if (silens)
{
return false;
}
else if (!userSearchFile(ref fullFileName, false, "Open file", false, canOpenOther))
{
return false;
}
}
if (createFile)
{
FileInfo fi = new FileInfo(fullFileName);
if (fi.Exists)
{
try
{
fi.Delete();
}
catch (Exception ex)
{
cError.mngError(ex, "open", c_module, "");
return false;
}
}
}
try
{
switch (mode)
{
case eFileMode.eAppend:
switch (access)
{
case eFileAccess.eShared:
m_file = new FileStream(fullFileName,
FileMode.Append,
FileAccess.Write,
FileShare.ReadWrite);
break;
case eFileAccess.eLockWrite:
m_file = new FileStream(fullFileName,
FileMode.Append,
FileAccess.Write,
FileShare.Read);
break;
case eFileAccess.eLockReadWrite:
m_file = new FileStream(fullFileName,
FileMode.Append,
FileAccess.Write,
FileShare.None);
break;
default:
return false;
}
break;
// text mode
case eFileMode.eWrite:
switch (access)
{
case eFileAccess.eShared:
m_file = new FileStream(fullFileName,
FileMode.OpenOrCreate,
FileAccess.Write,
FileShare.ReadWrite);
break;
case eFileAccess.eLockWrite:
m_file = new FileStream(fullFileName,
FileMode.OpenOrCreate,
FileAccess.Write,
FileShare.Read);
break;
case eFileAccess.eLockReadWrite:
m_file = new FileStream(fullFileName,
FileMode.OpenOrCreate,
FileAccess.Write,
FileShare.None);
break;
default:
return false;
}
break;
case eFileMode.eRead:
switch (access)
{
case eFileAccess.eShared:
m_file = new FileStream(fullFileName,
FileMode.OpenOrCreate,
FileAccess.Read,
FileShare.ReadWrite);
break;
case eFileAccess.eLockWrite:
m_file = new FileStream(fullFileName,
FileMode.OpenOrCreate,
FileAccess.Read,
FileShare.Read);
break;
case eFileAccess.eLockReadWrite:
m_file = new FileStream(fullFileName,
FileMode.OpenOrCreate,
FileAccess.Read,
FileShare.None);
break;
default:
return false;
}
break;
// binary mode
case eFileMode.eBinaryWrite:
switch (access)
{
case eFileAccess.eShared:
m_file = new FileStream(fullFileName,
FileMode.OpenOrCreate,
FileAccess.Write,
FileShare.ReadWrite);
m_bw = new BinaryWriter(m_file);
break;
case eFileAccess.eLockWrite:
m_file = new FileStream(fullFileName,
FileMode.OpenOrCreate,
FileAccess.Write,
FileShare.Read);
m_bw = new BinaryWriter(m_file);
break;
case eFileAccess.eLockReadWrite:
m_file = new FileStream(fullFileName,
FileMode.OpenOrCreate,
FileAccess.Write,
FileShare.None);
m_bw = new BinaryWriter(m_file);
break;
default:
return false;
}
break;
case eFileMode.eBinaryRead:
switch (access)
{
case eFileAccess.eShared:
m_file = new FileStream(fullFileName,
FileMode.OpenOrCreate,
FileAccess.Read,
FileShare.ReadWrite);
m_br = new BinaryReader(m_file);
break;
case eFileAccess.eLockWrite:
m_file = new FileStream(fullFileName,
FileMode.OpenOrCreate,
FileAccess.Read,
FileShare.Read);
m_br = new BinaryReader(m_file);
break;
case eFileAccess.eLockReadWrite:
m_file = new FileStream(fullFileName,
FileMode.OpenOrCreate,
FileAccess.Read,
FileShare.None);
m_br = new BinaryReader(m_file);
break;
default:
return false;
}
break;
default:
return false;
}
m_open = true;
return true;
}
catch (Exception ex)
{
cError.mngError(ex, "open", c_module, "");
return false;
}
}