I can't really tell if this is a bug or a *feature*. Path is meant to
handle various file systems, DFS, S3, Local, etc. Path has a toURI
method. I don't think the current behavior of toURI is consistent,
especially with local file handling. Take the following code:
Path path = new Path("/home/dennis");
URI uri = new File("/home/dennis").toURI();
URI straight = new URI("/home/dennis");
// this will error out for not being absolute File fromStraight = new
File(straight);
System.out.println("Path to URI: " + path.toUri());
System.out.println("Path to String: " + path.toString());
System.out.println("URI from File: " + uri);
System.out.println("URI straight: " + straight);
Prints
Path to URI: /home/dennis
Path to String: /home/dennis
URI from File: file:/home/dennis/
URI straight: /home/dennis
If I call Path.toURI is essentially prints out the path without a
scheme. On the other hand if I create a file and call its toURI method
I get a scheme. If I try to create a URI without a scheme, the code
errors out for not being an absolute path.
My question here is shouldn't the Path toURI method always return the
full path with the scheme? The current behavior causes problems on
local file system handling code, such as search servers in Nutch. I can
of course write workarounds for the current behavior but I believe there
is a larger issue here. All thoughts are appreciated.
Dennis Kubes