В чем разница между Java.Net.Uri и Android.Net.Uri

Я пытаюсь получить Uri из file объекта следующим образом:

 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.Uri разница между Java.Net.Uri и Android.Net.Uri – эти два значения должны быть разными? Когда они должны использоваться?

Обновить

Я нашел две страницы документации Java.Net.Uri и Android.Net.Uri, и оба говорят:

Создает и анализирует URI-ссылки, которые соответствуют RFC 2396 .

Поэтому, конечно, это ошибка, и они должны возвращать одну и ту же строку?

Solutions Collecting From Web of "В чем разница между Java.Net.Uri и Android.Net.Uri"

Разница в том, что Android.Net.Uri является собственной реализацией Google RFC 2396.

Android.Net.Uri является неизменным, поэтому он является потокобезопасным. Их реализация также, согласно комментариям в источнике , более прощает. Поэтому, в то время как Java.Net.Uri выбрасывает Exception вы Java.Net.Uri использовать мусор Uri, реализация Android просто вернет вам Uri с этим мусором.

Насколько я могу судить, Android.Net.Uri будет генерировать исключение NullPointerException и, по-видимому, никаких других исключений. Хотя реализация Java.Net.Uri будет Java.Net.Uri другие исключения, такие как URISyntaxException и IllegalArgumentException

В противном случае они кажутся очень похожими.

Ури вы получаете 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.net.uri поддерживает адреса IPv4 и IPv6, тогда как android.net.uri поддерживает только IPv4 .