我正在開發一個使用Xamarin IOS的應用程序,使用opengl遊戲模板作爲開始。如何從絕對NSURL加載文件在xamarin
我已經建立了我的應用程序能夠打開一個特定的文件格式,並在AppDelegate.cs
的問題是,如果我這樣做已經重寫了的OpenURL代表:
public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
Stream bob = new FileStream(url.AbsoluteString, FileMode.Open, FileAccess.Read);
return true;
}
我相處的
"Unable to open file : /private/var/mobile/Applications/A7B5E435-F7D1-4985-BA97-C243E63EFC39/MyApp.app/file:///private/var/mobile/Applications/A7B5E435-F7D1-4985-BA97-C243E63EFC39/Documents/Inbox/A%20File%20To%20Open.ext"
這似乎是因爲url.AbsoluteString返回文件的線條異常的東西:/// ...的一部分,但永遠的FileStream想要一個更消毒路徑(WIT小時%與20年代例如空格)代替相對要做就要做到應用程序的包目錄
/private/var/mobile/Applications/A7B5E435-F7D1-4985-BA97-C243E63EFC39/MyApp.app/
在我得到了它在服用url.AbsoluteString非常破解方式工作結束後,刪除「文件:///「部分,將一堆../../../等添加到開頭,並用」「替換」%20「。
public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{
string fname = "../../../../../../../../../" + (url.AbsoluteString).Replace("%20", " ").Replace("file:///","");
Stream bob = new FileStream(fname, FileMode.Open, FileAccess.Read);
return true;
}
而這個工作......但它似乎可怕的破解。那麼使用Xamarin從NSURL獲取可讀文件流的方法是什麼?
(注意,這是在IOS 7,在IOS 9,傳遞的路徑是對FILESTREAM的默認目錄不同在許多方面和在目錄樹中的較高水平太)
什麼是'NSUrl'的來源是什麼?這是否來自文件選擇器?我剛剛實現了非常類似的行爲。 – matthewrdev