Я не уверен, что вы действительно хотите это сделать. Если вам нужен URL для конкретной задачи, просто сделайте следующее:
URL url = this.getClass().getClassLoader().getResource("/songs/BrokenAngel.mp3");
Если же вы получить входной поток в одной части вас кода, а затем передать его в другой модуль, и там хотят, чтобы найти то, что было источником URL для этого входного потока «почти» невозможно. Проблема в том, что вы получаете BufferedInputStream
, который обертывает FileInputStream
, который не хранит информацию об этом источнике. Вы не можете получить его, даже используя отражение. Если вы действительно хотите сделать это, вы можете сделать следующее.
реализовать у вас есть UrlInputStream extends InputStream
попадает в конструктор URL
, хранит его в классе varible, создает входной поток посредством вызова url.openStream()
и заворачивает.
Теперь вы можете использовать свой поток как обычный поток ввода, пока не получите URL-адрес. На этом этапе вы должны отдать его на свой UrlInputStream
и вызвать метод getUrl()
, который вы реализуете.
Нет, вы не можете, если входной поток считывается. –