2012-03-09 14 views
0

2つのメモリマップファイルをマージできますか?もしそうなら、どのように?そうでない場合はどうしてですか?だからここ2つのメモリマップファイルをマージできますか?

+0

あなたはpreferiblyあなたが達成しようとしているもののサンプルコードで、さらにいくつかの言葉で説明することができます。 –

+0

「マージ」とはどういう意味ですか?ファイルのメモリマッピングは、ファイル内のデータを調べる別の方法です。あなたは、メモリマッピングを使用せずにあなたの望む結果を記述できますか? –

+0

mmapされた2つの領域を*マージすることはできませんが、データを一方から他方にコピーしたり、統一ビュー*を作成することはできます。 –

答えて

3

はそれを試してみる、MemoryMappedFilesと私の最初の経験です:

String f1Path = @"C:\Temp\Test1.txt"; 
String f2Path = @"C:\Temp\Test2.txt"; 
byte[] buffer; 
int offset; 
int length; 

using (FileStream f1ReadStream = new FileStream(f1Path, FileMode.Open, FileAccess.Read)) 
{ 
    offset = (int)f1ReadStream.Length; 
} 
using (FileStream f2ReadStream = new FileStream(f2Path, FileMode.Open, FileAccess.Read)) 
{ 
    length = (int)f2ReadStream.Length; 
} 
// read file2 and append all to file1 
using (var mappedFile2 = MemoryMappedFile.CreateFromFile(f2Path, FileMode.Open, null, length)) 
{ 
    using (var reader = mappedFile2.CreateViewStream(0, length, MemoryMappedFileAccess.Read)) 
    { 
     // Read from MMF 
     buffer = new byte[length]; 
     reader.Read(buffer, 0, length); 
    } 
} 

using (var mappedFile1 = MemoryMappedFile.CreateFromFile(f1Path,FileMode.Open, null, offset + length)) 
{ 
    // Create writer to MMF 
    using (var writer = mappedFile1.CreateViewAccessor(offset, length, MemoryMappedFileAccess.Write)) 
    { 
     // Write to MMF 
     writer.WriteArray<byte>(0, buffer, 0, length); 
    } 
} 
+1

すごい!! ..働いているようだ。自分のシナリオに合っているかどうかを確認する必要があります。あなたの時間を捧げてくれてありがとう。 –

+0

私の質問にお答えください。http://stackoverflow.com/questions/9760073/memorymappedfile-doesnt-work-with-2-processes –

+0

私のプロジェクトでは動作しません。どうしてか分かりません。 Test1.txtは変更されません。 –

関連する問題