该程序与getResource运行良好,但在将其放入jar文件后,它有FileNotFoundException
。它无法找到test.conf。
我的代码是
URL url = getClass().getResource("test.conf");
File fin = new File(url.getPath());
FileInputStream fis = null;
try {
fis = new FileInputStream(fin);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
我想我可以通过使用getResourceAsStream解决问题。但我不确定如何将getResource更改为getResourceAsStream。
答案 0 :(得分:0)
您的示例表明您的阅读代码已经在FileInputStream上运行。您应该能够使用更通用的InputStream。这将允许您将getResourceStream()的结果传递给您的阅读代码,而不必担心文件。
所以:
public class NumberCoverter {
public static enum ModeType { ACCURATE, FAST };
public ModeType modeType = ModeType.ACCURATE;//the default
public double[] doubleValues = { 7254.22222455879789, 356798.365484464, 15464.48486495615 };
public float[] floatValues = new float[doubleValues.length] ; //make this array the same size as doubleValues array
public void printValues(){
if(modeType==ModeType.ACCURATE)
printAccurate();
else
printFast();
}
public void printAccurate(){
for(int i=0; i<doubleValues.length;i++)
System.out.println("Double precision: "+doubleValues[i]);
}
public void printFast(){
for(int i=0; i<floatValues.length;i++) {
floatValues[i] = (float)doubleValues[i];
System.out.println("Single precision: "+floatValues[i]);
}
}
public static void main(String[] args) {
NumberCoverter nc = new NumberCoverter();
System.out.println("Printing in accurate mode");
nc.printAccurate();
System.out.println("Printing in fast mode");
nc.printFast();
}
更改为:
URL url = getClass().getResource("test.conf");
File fin = new File(url.getPath());
FileInputStream fis = new FileInputStream(fin);
ReadResourceFromStream(fis);