Я получаю исключение: "Схема URI не является файлом"
То, что я делаю, пытается получить название файла и затем сохранить тот файл (с другого сервера) на мой компьютер/сервер из сервлета.
У меня есть Строка, названная "URL", от вслед за тем вот мой код:
url = Streams.asString(stream); //gets the URL from a form on a webpage
System.out.println("This is the URL: "+url);
URI fileUri = new URI(url);
File fileFromUri = new File(fileUri);
onlyFile = fileFromUri.getName();
URL fileUrl = new URL(url);
InputStream imageStream = fileUrl.openStream();
String fileLoc2 = getServletContext().getRealPath("pics/"+onlyFile);
File newFolder = new File(getServletContext().getRealPath("pics"));
if(!newFolder.exists()){
newFolder.mkdir();
}
IOUtils.copy(imageStream, new FileOutputStream("pics/"+onlyFile));
}
Строка, вызывающая ошибку, является этим:
File fileFromUri = new File(fileUri);
Я добавил остальную часть кода, таким образом, Вы видите то, что я пытаюсь сделать.
«Схема» URI - это то, что стоит перед «:», например «http» в « http: // stackoverflow. com ".
Сообщение об ошибке сообщает вам, что новый файл (fileUri)
работает только с URI «file:» (те, которые относятся к имени пути в текущей системе), а не с другими схемами, такими как «http».
По сути, URI «file:» - это еще один способ указать путь к классу File
. Это не волшебный способ указать файлу
использовать http для получения файла из Интернета.
Ваше предположение о создании файла
из URL
здесь неверно.
Вам просто не нужно создавать файл
из URL-адреса файла в Интернете, чтобы вы получили имя файла.
Вы можете просто сделать это, проанализировав URL-адрес следующим образом:
URL fileUri = new URL("http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/domefisheye/ladybug/fish4.jpg");
int startIndex = fileUri.toString().lastIndexOf('/');
String fileName = fileUri.toString().substring(startIndex + 1);
System.out.println(fileName);