in core/src/main/java/org/apache/calcite/avatica/util/Sources.java [127:156]
private static URL fileToUrl(File file) {
String filePath = file.getPath();
if (!file.isAbsolute()) {
// convert relative file paths
filePath = filePath.replace(File.separatorChar, '/');
if (file.isDirectory() && !filePath.endsWith("/")) {
filePath += "/";
}
try {
// We need to encode path. For instance, " " should become "%20"
// That is why java.net.URLEncoder.encode(java.lang.String, java.lang.String) is not
// suitable because it replaces " " with "+".
String encodedPath = new URI(null, null, filePath, null).getRawPath();
return new URL("file", null, 0, encodedPath);
} catch (MalformedURLException | URISyntaxException e) {
throw new IllegalArgumentException("Unable to create URL for file " + filePath, e);
}
}
URI uri = null;
try {
// convert absolute file paths
uri = file.toURI();
return uri.toURL();
} catch (SecurityException e) {
throw new IllegalArgumentException("No access to the underlying file " + filePath, e);
} catch (MalformedURLException e) {
throw new IllegalArgumentException("Unable to convert URI " + uri + " to URL", e);
}
}