How to write data at a particular position in c#?

后端 未结 4 700

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

相关标签:
4条回答
  • 2020-12-06 06:38

    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.

    0 讨论(0)
  • 2020-12-06 06:41

    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.)

    0 讨论(0)
  • 2020-12-06 06:56

    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);
    }
    
    0 讨论(0)
  • 2020-12-06 06:58

    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.

    0 讨论(0)
提交回复
热议问题