title: Save NSData when memory mapped
body: <p>What I am hoping to do may or may not be possible but I'll give it a shot. I am attempting to load huge multiple gigabyte text files. I am currently using an memory mapped NSData and only loading portions at a time and just infinite scrolling through it and load the currently visible chunk and it all is happy and it barely breaks a sweat with memory (&lt;30mb).</p>
  
  <p>Next I wanted to add editing of the data. I casually assumed I could just edit that memory mapped data and have it reflect on disk. This does not seem to be the case. Is there a way I can say hey the data changed! update the file. I am a little vague on how the file and NSData are linked.</p>
  
  <p>Here is how it is currently working.</p>
  
  <pre><code>// create the memory mapped data:
  self.fileData = [NSMutableData dataWithContentsOfURL:url options:NSDataReadingMappedAlways error:outError];
  
  //load a chunk
  self.currentRange = NSMakeRange(0, 4096);
  void* data = malloc(4096);
  [self.fileData getBytes:data range:self.currentRange];
  NSString* currentView = [[NSString alloc] initWithBytes:data length:4096 encoding:NSUTF8StringEncoding];
  
  //replace a chunk:
  NSData* currentData = [[self.textArea string] dataUsingEncoding:NSUTF8StringEncoding];
  [self.fileData replaceBytesInRange:self.currentRange withBytes:[currentData bytes] length:[currentData length]];
  //If I close and re-open it doesn't actually work
  </code></pre>
  
  <p>Is there a way of doing this or would it be possible to create an <code>NSOutputStream</code> to the URL and somehow stream portions of it back to disk? Is there another way to write/save memory mapped data? If I try to do a <code>writeToURL:</code> or comparable function it will load it all to actual memory which is really no good. </p>