The file stream is being used by another process.

FileStream f=new FileStream("c:\\file.xml",FileMode.Create); StreamWriter sf=new StreamWriter(f); sf.WriteLine(stroka); sf.Close(); sf.Dispose(); f.Close(); f.Dispose(); FileStream f1=new FileStream("c:\\file.xml",FileMode.Open); StreamReader sr=new StreamReader("c:\\file.xml"); xmlreader=new XmlTextReader(sr); sr.Close(); sr.Dispose(); f1.Close(); f1.Dispose(); 

I get this error:

The process cannot access the file 'c: \ file.xml' because it is being used by another process

I closed everything and dismantled everything. What is the problem?

+4
source share
4 answers

Replace:

 StreamReader sr=new StreamReader("c:\\file.xml"); 

Via:

 StreamReader sr=new StreamReader(f1); 

You create a new StreamReader without a FileStream


Additional data:

  • The StreamReader object calls Dispose on the provided Stream object when StreamReader.Dispose is StreamReader.Dispose .

  • Dispose method calls the Close method. Read more.

Meaning: you can remove Dispose and Close that you wrote on FileStream

 FileStream f = new FileStream("c:\\file.xml", FileMode.Create); StreamWriter sf = new StreamWriter(f); sf.WriteLine(stroka); sf.Dispose(); FileStream f1 = new FileStream("c:\\file.xml", FileMode.Open); StreamReader sr = new StreamReader(f1); xmlreader = new XmlTextReader(sr); sr.Dispose(); 

But you really have to use using statement for unmanaged resources, read this .

+9
source

You have FileStream and StreamReader in the same file. Remove this line:

 FileStream f1=new FileStream("c:\\file.xml",FileMode.Open); 
+2
source

Change

 StreamReader sr=new StreamReader("c:\\file.xml"); 

to

 StreamReader sr=new StreamReader(f1); 

both lines of followiong code are separate objects trying to access the same file:

 FileStream f1=new FileStream("c:\\file.xml",FileMode.Open); StreamReader sr=new StreamReader("c:\\file.xml"); 

so everyone is trying to access the file, no matter how I change the code to my sr connection cases to access the file. Through f1

+2
source

The problem may be:

 FileStream f1=new FileStream("c:\\file.xml",FileMode.Open); StreamReader sr=new StreamReader("c:\\file.xml"); 

Filestream can access the file, and then StreamReader tries to access the file separately. Try using StreamReader on the same specific stream.

+1
source

Source: https://habr.com/ru/post/1402916/


All Articles