I’m using FlatPack to parse and load data from flat files. This requires loading a config file that stores mappings of the columns of the flat file.
I have a constant to define the location of the mapping file:
private static final String MAPPING_FILE = "src/com/company/config/Maping.pzmap.xml";
I have a parse(File dataFile) method that actually does the parsing:
private void parse(File dataFile) throws FileNotFoundException, SQLException { Parser parser; log.info("Parsing " + dataFile.getName()); FileReader mappingFileReader = new FileReader(MAPPING_FILE); FileReader dataFileReader = new FileReader(dataFile); parser = DefaultParserFactory.getInstance().newFixedLengthParser(mappingFileReader, dataFileReader); parser.setHandlingShortLines(true); DataSet dataSet = parser.parse(); //process the data }
When I jar up everything and run it as a jar – it bombs out on FileReader mappingFileReader = new FileReader(MAPPING_FILE);
with a FileNotFoundException
. That file is inside the jar though.
How do I get to it?
I’ve looked at this question and this question about accessing files inside jars and they both recommend temporarily extracting the file. I don’t want to do that though.
Advertisement
Answer
if it’s inside a JAR, it’s not a File, generally speaking. You should load the data using Class.getResourceAsStream(String)
, or something similar.