Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 82 additions & 40 deletions dotnet/src/dotnetframework/GxClasses/Domain/GXFileIO.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1431,58 +1431,100 @@ public void AppendAllLines(GxSimpleCollection<string> value, String encoding)
WriteAllLines(value, encoding, true);
}

public void Open(String encoding)
{
OpenWrite(encoding);
OpenRead(encoding);
}

public void Open(string encoding)
{
OpenWrite(encoding);
OpenRead(encoding);
}

private FileStream _fileStreamWriter;
private StreamWriter _fileWriter;

private FileStream _fileStreamReader;
private StreamReader _fileReader;

public void OpenWrite(String encoding)
{
_lastError = 0;
_lastErrorDescription = "";
if (validSource())
{
try
{
public void OpenWrite(string encoding)
{
_lastError = 0;
_lastErrorDescription = "";
if (validSource())
{
int attempts = 0;
bool opened = false;
while (!opened && attempts < 3)
{
#pragma warning disable SCS0018 // Path traversal: injection possible in {1} argument passed to '{0}'
_fileStreamWriter = new FileStream(_file.FullName, FileMode.Append | FileMode.OpenOrCreate, FileAccess.Write);
try
{
_fileStreamWriter = new FileStream(_file.FullName,
FileMode.Append | FileMode.OpenOrCreate,
FileAccess.Write,
FileShare.Read);
_fileWriter = new StreamWriter(_fileStreamWriter, GXUtil.GxIanaToNetEncoding(encoding, false));
opened = true;
}
catch (IOException ex)
{
attempts++;
if (attempts >= 3)
{
setError(ex);
break;
}
System.Threading.Thread.Sleep(2000);
}
catch (Exception e)
{
setError(e);
break;
}
#pragma warning restore SCS0018 // Path traversal: injection possible in {1} argument passed to '{0}'
_fileWriter = new StreamWriter(_fileStreamWriter, GXUtil.GxIanaToNetEncoding(encoding, false));
}
catch (Exception e)
{
setError(e);
}
}
}
}
}
}

public void OpenRead(String encoding)
{
_lastError = 0;
_lastErrorDescription = "";
if (validSource())
{
try
{
public void OpenRead(string encoding)
{
_lastError = 0;
_lastErrorDescription = "";
if (validSource())
{
int attempts = 0;
bool opened = false;
while (!opened && attempts < 3)
{
#pragma warning disable SCS0018 // Path traversal: injection possible in {1} argument passed to '{0}'
_fileStreamReader = new FileStream(_file.FullName, FileMode.Open, FileAccess.Read);
try
{
_fileStreamReader = new FileStream(_file.FullName,
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite);
_fileReader = new StreamReader(_fileStreamReader, GXUtil.GxIanaToNetEncoding(encoding, false));
opened = true;
}
catch (IOException ex)
{
attempts++;
if (attempts >= 3)
{
setError(ex);
break;
}
System.Threading.Thread.Sleep(2000);
}
catch (Exception e)
{
setError(e);
break;
}
#pragma warning restore SCS0018 // Path traversal: injection possible in {1} argument passed to '{0}'
_fileReader = new StreamReader(_fileStreamReader, GXUtil.GxIanaToNetEncoding(encoding, false));
}
catch (Exception e)
{
setError(e);
}
}
}
}
}
}

public void WriteLine(String value)
public void WriteLine(String value)
{
_lastError = 0;
_lastErrorDescription = "";
Expand Down
Loading