Usuario1
estoy tratando de conseguir un Uri
a partir de una file
objeto así:
File file = new File("/sdcard/MyFolder/MyFile.txt");
var androidUri = Android.Net.Uri.FromFile(file).ToString();
var javaUri = file.ToURI().ToString();
esto devuelve los siguientes valores:
androidUri = "file:///sdcard/MyFolder/MyFile.txt"
javaUri = "file:/sdcard/MyFolder/MyFile.txt"
así que mi pregunta es cuál es la diferencia entre el Java.Net.Uri
y Android.Net.Uri
¿Se supone que estos dos valores son diferentes? ¿Cuándo se deben usar?
Actualizar
Encontré las dos páginas de documentación. Java.Net.Uri y Android.Net.Uri y ambos dicen:
Construye y analiza referencias de URI que se ajustan a RFC 2396.
Por lo tanto, seguramente se trata de un error y deberían devolver la misma cadena.
barón de queso
la diferencia es que Android.Net.Uri
es la propia implementación de Google de RFC 2396.
Android.Net.Uri
es inmutable, por lo tanto, es seguro para subprocesos. Su implementación es también, según el comentarios en la fuente, más indulgente. así que mientras Java.Net.Uri
lanzaría un Exception
intenta usar un Uri basura, la implementación de Android solo le devolverá un Uri con esa basura.
Por lo que yo puedo decir, Android.Net.Uri
solo lanzará NullPointerException y aparentemente ninguna otra excepción. Mientras que la Java.Net.Uri
la implementación lanzará otras excepciones como URISyntaxException
y IllegalArgumentException
Por lo demás, parecen muy similares.
El Uri que obtienes file:/sdcard/MyFolder/MyFile.txt
es válido, y al pasarlo java.net.URI
me sale lo siguiente:
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"
Aquí hay una diferencia práctica:
java.net.uri admite direcciones IPv4 e IPv6, mientras que android.net.uri solo admite IPv4.
para Android desarrollador.android.com/reference/android/net/Uri.html
– IntelliJ Amiya
22 de julio de 2015 a las 10:47
pregunta y respuesta similar aquí: stackoverflow.com/questions/12649530/…
– mayyo
22 de julio de 2015 a las 10:48
@mayyo No veo cómo se relaciona esa pregunta. Habla sobre la conversión entre los dos, no cuál es la diferencia / Cuándo deben usarse
– Usuario1
22 de julio de 2015 a las 10:50