Pergunta

I have text file which i need to update according to the regex match but as soon as my program tries to write a line into text file it is giving following error..

The process cannot access the file 'D:\Archieve\20140123.text' because it is being used by another process.

Here is my C# code..

static void Main(string[] args)
    {
        string textfilename="";
        string strDateTime = DateTime.Now.ToString("yyyyMMdd");
        string strformatedatetime = DateTime.Now.ToString("yyyy/MM/dd");
        if (strDateTime != "") {

            string loc = "D:\\Archieve\\";
            string date=strDateTime;
            string text=".text";
            textfilename = loc + date + text;
            File.Create(textfilename);                
        }
        string pattern = "^" + strformatedatetime + ".*";
        string FileToCopy = "D:\\ipdata.txt";
        string NewCopy =textfilename;
        StringBuilder sb = new StringBuilder("");
        List<string> newLines = new List<string>();

        if (System.IO.File.Exists(FileToCopy) == true)
        {
            string[] lines = File.ReadAllLines(FileToCopy);
            foreach (string line in lines)
            {
                if (Regex.IsMatch(line, pattern))
                {
                    sb.Append(line + System.Environment.NewLine);

                    TextWriter tsw = new StreamWriter(textfilename,true);
                    //Writing text to the file.
                    tsw.WriteLine(sb);
                    //Close the file.
                    tsw.Close();    
                }
            }
        }
    }

I am getting above defined error at this line of code...

TextWriter tsw = new StreamWriter(textfilename,true);

Where am i going wrong ?

Foi útil?

Solução 2

Use File.Create(textfilename).Close();

As the error message suggests

Outras dicas

You don't need to have a separate instruction to create a file. The StreamWriter will take care of it: Here is the description of the constructor you user

> Initializes a new instance of the StreamWriter class for the specified
> file by using the default encoding and buffer size. If the file
> exists, it can be either overwritten or appended to. If the file does
> not exist, this constructor creates a new file.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top