gpt4 book ai didi

java - Java.Net.Uri 和 Android.Net.Uri 有什么区别

转载 作者:IT老高 更新时间:2023-10-28 21:01:37 26 4
gpt4 key购买 nike

我正在尝试从 file 对象中获取 Uri,如下所示:

File file = new File("/sdcard/MyFolder/MyFile.txt");
var androidUri = Android.Net.Uri.FromFile(file).ToString();
var javaUri = file.ToURI().ToString();

这将返回以下值:

androidUri = "file:///sdcard/MyFolder/MyFile.txt"
javaUri = "file:/sdcard/MyFolder/MyFile.txt"

所以我的问题是 Java.Net.UriAndroid.Net.Uri 之间的区别是什么,这两个值应该不同吗?什么时候应该使用它们?

更新

我找到了两个文档页面 Java.Net.UriAndroid.Net.Uri都说:

Builds and parses URI references which conform to RFC 2396.

因此这肯定是一个错误,它们应该返回相同的字符串?

最佳答案

区别在于Android.Net.Uri是 Google 自己的 RFC 2396 实现。

Android.Net.Uri是不可变的,因此它是线程安全的。根据comments in the source,它们的实现也是,更宽容。所以虽然Java.Net.Uri会抛出 Exception如果您尝试使用垃圾 Uri,Android 实现只会返回带有该垃圾的 Uri。

据我所知,Android.Net.Uri只会抛出 NullPointerException 而似乎没有其他异常。而Java.Net.Uri实现将抛出其他异常,例如 URISyntaxExceptionIllegalArgumentException

否则它们看起来非常相似。

你得到的 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"

关于java - Java.Net.Uri 和 Android.Net.Uri 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31560803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com