I am making an application in c#. In that application I have one byte array and I want to write that byte array data to particular position.
Here i used the followin
You can set the position inside the stream like this:
writer.BaseStream.Seek( 1000, SeekOrigin.Begin);
Add this before your WriteLine
code.
Note that I have not included any code to check that there is at least 1000 chars inside the file to start with.
Maybe a bit hacky, but you can access the BaseStream
property of the StreamWriter
and use Seek(long offset, SeekOrigin origin)
on it. (But be warned, as not every stream can use Seek
.)
Never try to write binary data as strings, like you do. It won't work correctly. Write binary data as binary data. You can use Stream
for that instead of StreamWriter
.
using (Stream stream = new FileStream(fileName, FileMode.OpenOrCreate))
{
stream.Seek(1000, SeekOrigin.Begin);
stream.Write(Data, 0, Data.Length);
}
The WriteLine
overload you are using is this one:
TextWriter.WriteLine Method (Char[], Int32, Int32)
In particular the IndexInFile
argument supplied is actually the index in the buffer from which to begin reading not the index in the file at which to begin writing - this explains why you are writing at the start of the file not at IndexInFile
as you expect.
You should obtain access to the underlying Stream and Seek
to the desired position in the file first and then write to the file.