Search code examples
c#appendoverflowfilestreamoverwrite

When using Filestream Filemode.Append does it overwrite what is lying next to the file?


Lets assume that exactly 1 byte after the File-1-EOF another file (file2) starts.

If I open up file 1 and use FileStream Filemode.Append, does it overwrite file2 or does it make another copy at a place where there is enough memory?

Thanks, in regards!

Edit: For everyone after me: I forgot that you have a file system, which is split into chunks. Making this question nonsense!


Solution

  • You appear to be laboring under the misapprehension that files are stored sequentially on disk, and that extending one file might overwrite parts of another file. This doesn't happen when you go via a filestream append in c#. The operating system will write the bytes you add however it likes, wherever it likes (and it likes to not overwrite other files) which is how files end up broken into smaller chunks (and why defragging is thing) scattered all over the disk. None of this is of any concern to you, because the OS presents those scattered file fragments as a single contiguous stream of bytes to any program that wants to read them

    Of course, if you wrote a program that bypassed the OS and performed low level disk access, located the end of the file and then blindly write more bytes into the locations after it then you would end up damaging other files, and even the OS's carefully curated filesystem .. but a .net file stream won't make that possible

    TLDR; add your bytes and don't worry about it. Keeping the filesystem in order is not your job