wise community! I ask you for help again in my, maybe simple, situation.
So. I have some file (.ini-file) with some text lines. Example of file:
[SomeGuy]
Name = Alex;
Surname = Newbie;
EMails = "-mails=@mail1@somemail.com;@mail2@somemail.com;" -MainEmail=mail1@somemail.com
Visits = 0;
...
I'm trying to find a solution to: 1) Replace:
EMails = "-mails=@mail1@somemail.com;@mail2@somemail.com;" -MainEmail=mail1@somemail.com
to
EMails = "-mails=@mail1@somemail.com;@mail2@somemail.com;" -MainEmail=NewEmail
2) Or delete:
EMails = "-mails=@mail1@somemail.com;@mail2@somemail.com;" -MainEmail=mail1@somemail.com
and fit in its place:
EMails = "-mails=@mail1@somemail.com;@mail2@somemail.com;" -MainEmail=NewEmail
Where 'NewEmail' - is a new variable value taken from user's input.
I searched here for some solutions, found some and applied applied in this example:
string IniFile = @"S:\My.ini";
var fileStrings = File.ReadAllLines(IniFile).ToList();
for (var i = fileStrings.Count - 1; i >= 0; i--)
{
if (fileStrings[i].StartsWith("EMails"))
fileStrings.RemoveAt(i);
}
string NewEmail = "EMails = \"-mails=@mail1@somemail.com;@mail2@somemail.com;\" -MainEmail"+EMailField.Text;
File.AppendText(IniFile).Write(NewEmail);
File.WriteAllLines(IniFile, fileStrings);
EMailField is users input field, from which I take written value (EMailField.Text).
In this example I get error after input: System.IO.IOException: The process cannot access the file 'S:\My.ini' because it is being used by another process.
But it is not open, used or smth else. I also try to write all line from original file to another by applying this:
string NewIniFile = @"S:\MyNew.ini";
...
File.WriteAllLines(NewIniFile, fileStrings);
But again get same error - "...'S:\My.ini' is being used by another process".
Using Visual Studio 2019 and creating Windows Forms application.
Please poke me in the eye what am I doing wrong.