3
我有幾個方法可以與MemoryMappedFiles一起使用來寫入/讀取數據。如果我使用簡單字符串作爲文件名,例如「file.mmf」,它們可以正常工作。但是,如果我使用完整的目錄路徑,上述異常正在拋出 - Exception has been thrown by the target of an invocation.
有內部異常 - {"Could not find a part of the path."}
。這裏是我的方法是如何的樣子:MemoryMappedFiles無法找到路徑的一部分
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
第一「使用」行中出現的異常。如果我嘗試創建使用相同的文件路徑的文件與
File.Create
文件正在被使用沒有問題的產生。
如果有人有任何建議,那就太好了。
問候
嗯,起初我MAPNAME只是文件名(不帶路徑),這也不能工作。但是使用GUID會使這件事情起作用。謝謝你幫助我。 –
@ Georgi-it如果從文件名中刪除擴展名並將其用作映射名,它將起作用(當然,它需要您的文件名具有擴展名)。 – Alex
是否記錄了mapname必須與文件路徑不同的任何地方?在任何地方? – antlersoft