2015-07-22 4 views
9

Ich versuche, ein Uri von einem file-Objekt zu erhalten, wie so:Was ist der Unterschied zwischen Java.Net.Uri und Android.Net.Uri

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

dies die folgenden Werte zurück:

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

so ist meine Frage, was ist der Unterschied zwischen den Java.Net.Uri und Android.Net.Uri sind diese beiden Werte soll anders sein? Wann sollten sie verwendet werden?

aktualisieren

fand ich die beiden Seiten der Dokumentation Java.Net.Uri und Android.Net.Uri und beide sagen:

Baut und parst Referenzen URI, die zu RFC 2396 entsprechen.

Also sicherlich ist dies ein Fehler und sie sollten die gleiche Zeichenfolge zurückgeben?

+0

Diese Frage bezieht sich nicht auf C#. Löschen Sie den Tag bitte –

+0

für Android http://developer.android.com/reference/android/net/Uri.html –

+0

ähnliche Frage und Antwort hier: http://stackoverflow.com/questions/12649530/convert -java-net-uri-zu-android-net-uri – mayyo

Antwort

5

Der Unterschied besteht darin, dass Android.Net.Uri ist eine eigene Implementierung von Google von RFC 2396.

Android.Net.Uri unveränderlich ist, daher ist es Thread-sicher. Ihre Implementierung ist auch, gemäß der comments in the source, fehlerverzeihender. Während also Java.Net.Uri einen Exception werfen würde, versuchen Sie, einen Müll-Uri zu verwenden, die Android-Implementierung würde Ihnen nur einen Uri mit diesem Müll zurückgeben.

Soweit ich das beurteilen kann, wird Android.Net.Uri nur NullPointerException werfen und scheinbar keine anderen Ausnahmen. Während die Java.Net.Uri Implementierung andere Ausnahmen wie URISyntaxException und

werfen wird, scheinen sie ansonsten sehr ähnlich.

Der Uri Sie erhalten file:/sdcard/MyFolder/MyFile.txt gültig ist, und wenn es durch java.net.URI werfen bekomme ich folgende:

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" 
Verwandte Themen