我正在尝试从另一个包访问文件: - 使用Main包中的LoadDatabase从资源访问DB.txt。
当我这样做时
@Override
public boolean onPrepareOptionsMenu(Menu menu){
//code here
}
它给了我这个错误
未处理的异常类型FileNotFoundException
答案 0 :(得分:1)
不要使用绝对路径使用getResourceAsStream方法 我不知道你正在使用哪个IDE,如果你指定这样的路径,jvm将从项目的根目录查找文件,但你的文件在rootproject-> src-> 的某些包下> strong>所以最好使用getResouceAsStream,因为当你构建它或运行它时,所有.class文件和属性文件都将在类路径下,所以我们知道我们的文件将在classpath中所以我们可以使用getResourceAsStream轻松读取文件例如: - 您正在从MainWindow.java类中读取该文件 使用以下代码 InputStream = MainWindow.class.getResourceAsStream(“/ Convocatoria / resources / DB.txt”) 从这个输入流你使用FileInputStream或任何你想读取文件
答案 1 :(得分:1)
由于您要从类路径中加载数据,因此可以改为使用资源:
String resourceName = "/com/Convocatoria/resources/DB.txt";
URL res = LoadDatabase.class.getResource(resourceName);
System.out.println("resource found at url="+res);
InputStream is = LoadDatabase.class.getResourceAsStream(resourceName);
Scanner s = new Scanner(is);
//read..
//after using it, close your stream
is.close();
答案 2 :(得分:0)
File
构造函数无法找到具有特定路径的文件时,它将抛出FileNotFoundException
。您需要使用try-catch
块来包围它,以捕获上述异常:
File file = null;
Scanner sc = null;
try{
file = new File("/com/Convocatoria/resources/DB.txt");
sc = new Scanner(file);
// do something with opened file
} catch(FileNotFoundException ex){
ex.printStackTrace();
}