データの書き込み/読み取りのために MemoryMappedFiles で動作するいくつかのメソッドがあります。ファイル名に「file.mmf」などの単純な文字列を使用すると、問題なく動作します。ただし、完全なディレクトリ パスを使用すると、上記の例外がスローされます -
Exception has been thrown by the target of an invocation.
With internal exception - {"Could not find a part of the path."}
。私の方法は次のようになります。
public void WriteToFile(string fileName, string value)
{
string newFileName = CombineDirectory(fileName);
byte[] newValue = Encoding.UTF8.GetBytes(value);
long capacity = newValue.Length + INT_MAXVALUE_TO_BYTEARRAY_LENGTH;
using (var mmf = MemoryMappedFile.CreateFromFile(newFileName, FileMode.Create, newFileName, capacity))
{
using (var accesor = mmf.CreateViewAccessor())
{
byte[] newValueLength = BitConverter.GetBytes(value.Length);
accesor.WriteArray(0, newValueLength, 0, newValueLength.Length);
accesor.WriteArray(INT_MAXVALUE_TO_BYTEARRAY_LENGTH, newValue, 0, newValue.Length);
}
}
}
私のパスは次のようになります。
"C:\\Users\\MyUser\\Documents\\Visual Studio 2012.mmf"
そして、私は使用しています
Path.Combine
例外は、最初の「using」行で発生します。同じファイルパスを使用してファイルを作成しようとすると
File.Create
ファイルは問題なく作成されています。
誰かに何か提案があれば、それは素晴らしいことです。
よろしく