Как преобразовать URL или String в File?

254
11 апреля 2017, 09:15

Необходимо передать из переменной типа URL ссылку на файл в переменную типа File. Как вариант, можно и String в File.
Весь интернет перерыл - ничего подходящего не нашёл. Среда разработки никаких подходящих методов не подсказала.
Из File в String всё конвертируется отлично, а вот наоборот - нет. Как это реализовать?

Answer 1

Попробуйте так:

FileInputStream fileIn = new FileInputStream(new File("любая строка типа String"));
Answer 2

Поскольку URL может указывать не только на файл в локальной файловой системе, то преобразовать его в File автоматически нельзя.

Один вариант просто создать поток из этого URL и читать из него.

URL u = ...;
byte buffer[] = new byte[1000];
InputStream is = u.openStream();
is.read(buffer);

Второй вариант - это анализ полученного URL и извлечение из него пути к файлу.

URL u = ...;
if(u.getProtocol().equals("file")) {
    System.out.println(u.getFile());
}
Answer 3

Можно воспользоваться методом toURI класса URL:

URL url = ...
try
{
    File file = new File(url.toURI());
}
catch (URISyntaxException e)
{
    e.printStackTrace();
}

Ещё можно попробовать через метод getPath:

URL url = ...
File file = new File(url.getPath());
READ ALSO
Какого типа массивы в Java?

Какого типа массивы в Java?

Массивы в Java - объектыНо какого они типа (класса)?

242
Не запускается Tomcat из NetBeans

Не запускается Tomcat из NetBeans

NetBeans 8 стоял раньше, поставил TomcatСоздал сервер, всё настроил по инструкциям, кавычки в catalina

327
Android. Java. Adapter. Fragment

Android. Java. Adapter. Fragment

Есть фрагментВ нём с сервера в методе onViewCreated() подгружаю историю сообщений между 2-мя пользователями

208
Java - Как объединить методы работающие с Activity

Java - Как объединить методы работающие с Activity

Хочу упросить код, так как в нём повторяются элементыПомогите это сделать

231