I think the %20 occurrences are the problem.
In URLs, spaces are replaced by %20. In file systems however, they are not.
You could try replacing every occurrence of %20 by a space, but that might break your code when run on a web server.
However, why use a FileInputStream? Besides "getResource(
String name)" which returns a URL object, both ClassLoader and Class also have "getResourceAsStream(String name)" which returns an InputStream object. You can use this instead of your FileInputStream.