KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a piece of code that needs to be able to modify a few bytes towards the end of a file. The problem is that the files are huge. Up to 100+ Gb. I need the operation to be as fast as possible but after hours of Googeling, it looks like .Net is rather limited here??? I have mostly been trying using System.IO.FileStream and know of no other methods. A "reverse" filestream would do but I have know idea how to create one (write from the end instead of the beginning). Here is sort of what I do: (Note: the time is spent when closing the stream) static void Main(string[] args) { //Simulate a large file int size = 1000 * 1024 * 1024; string filename = "blah.dat"; FileStream fs = new FileStream(filename, FileMode.Create); fs.SetLength(size); fs.Close(); //Modify the last byte fs = new FileStream(filename, FileMode.Open); //If I don't seek, the modification happens instantly fs.Seek(-1, SeekOrigin.End); fs.WriteByte(255); //Now, since I am modifying the last byte, //this last step is very slow fs.Close(); } }
Tags (comma-separated)
Save Edits
Cancel