A File
действительно файл в файловой системе.Для ресурса , который может быть файлом, заархивированным в jar-файле и имеющим путь к пути к классу, вам нужно что-то еще.
Традиционно можно использовать более общий InputStream вместоФайл.
InputStream in = getClass().getResourceAsStream("/.../x.csv"); // Path on the class path
С новым классом Path
, более общим, чем File
, вы можете работать с несколькими (виртуальными) файловыми системами:
URL url = getClass().getResource("/.../x.csv"); // Path on the class path
Path path = Paths.get(url.toURI());
Files.copy(path, Paths.get("..."));
С небольшим количествомудачи, ваш CSVManipulator должен быть не только параметризован с файлом, но и с InputStream
или Reader
(new InputStreamReader(in, "UTF-8")
)