use*_*er1 22 java android uri xamarin.android xamarin
我试图Uri从file像这样的对象得到一个:
File file = new File("/sdcard/MyFolder/MyFile.txt");
var androidUri = Android.Net.Uri.FromFile(file).ToString();
var javaUri = file.ToURI().ToString();
Run Code Online (Sandbox Code Playgroud)
这将返回以下值:
androidUri = "file:///sdcard/MyFolder/MyFile.txt"
javaUri = "file:/sdcard/MyFolder/MyFile.txt"
Run Code Online (Sandbox Code Playgroud)
所以我的问题是Java.Net.Uri,Android.Net.Uri这两个值之间的区别是什么?什么时候应该使用它们?
更新
我找到了两个文档页面Java.Net.Uri和Android.Net.Uri,他们都说:
构建和解析符合RFC 2396的 URI引用.
因此,这肯定是一个错误,他们应该返回相同的字符串?
Che*_*ron 17
不同的是,Android.Net.Uri谷歌自己实施的RFC 2396.
Android.Net.Uri是不可变的,因此它是线程安全的.根据消息来源的评论,他们的实施也更加宽容.因此,虽然Java.Net.Uri会抛出Exception你试图使用垃圾Uri,Android实现只会返回一个带有垃圾的Uri.
据我所知,Android.Net.Uri只会抛出NullPointerException而且看似没有其他异常.虽然Java.Net.Uri实现将抛出其他例外,例如URISyntaxException和IllegalArgumentException
否则它们看起来很相似.
你得到的Uri file:/sdcard/MyFolder/MyFile.txt是有效的,当它通过java.net.URI我得到以下:
java> String uri = "file:/sdcard/MyFolder/MyFile.txt";
java> import java.net.*
java> URI urr = new URI(uri);
java.net.URI urr = file:/sdcard/MyFolder/MyFile.txt
java> urr.getScheme();
java.lang.String res2 = "file"
java> urr.getPath();
java.lang.String res3 = "/sdcard/MyFolder/MyFile.txt"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4393 次 |
| 最近记录: |