我正在使用
FlatPack来解析和加载平面文件中的数据.这需要加载存储平面文件列的映射的配置文件.
我有一个常量来定义映射文件的位置:
private static final String MAPPING_FILE = "src/com/company/config/Maping.pzmap.xml";
我有一个实际解析的解析(File dataFile)方法:
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 }
当我把所有东西都装罐并以jar形式运行时 – 它会在FileReader上轰炸出来mapFileReader = new FileReader(MAPPING_FILE);使用FileNotFoundException.那个文件虽然在jar里面.
我怎么做到的?
我查看了this question和this question关于访问jar中的文件,他们都建议暂时解压缩文件.我不想这样做.
解决方法
如果它在JAR中,一般来说它不是文件.您应该使用
Class.getResourceAsStream(String)
或类似的东西加载数据.