我有几种使用MemoryMappedFiles写入/读取数据的方法。如果我使用简单的字符串文件名,例如“file.mmf”,它们可以正常运行。但是,如果我使用完整的目录路径,则会抛出上述异常 -
Exception has been thrown by the target of an invocation.
其中包含内部异常 - {"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
文件已经成功创建。
如果有任何建议,将不胜感激。
敬礼。