错误():构造函数文件(URL)未定义
Error(): The constructor File(URL) is undefined
我想使用 File() 构造函数将 sheet.xlsx 加载到一个变量中。
请在下面找到我的代码片段:
public class Main {
File input = new File(Main.class.getResource("/res/sheet.xlsx"));
}
sheet文件在根项目下的资源文件夹中,并勾选了eclipse中的“用作源文件夹”选项。
File() 构造函数返回以下错误
The constructor File(URL) is undefined
尽管 getResource()
returns 一个 URL.
我是不是用错了方法?有没有更好的方法解决我的问题。
您的意见很有帮助!
你想要的根本不可能。一个 java.io.File
对象代表一个 文件 并且 不能 代表任何其他东西。它不能表示 'a sack of bytes' 或 'an entry in a jar'。然而这就是你在这里所拥有的(罐子里的一个条目)。 File API 知道这一点,并且不允许您基于 URL 创建 File 对象,因为这通常是不可能的。
另一方面,资源是由类加载器加载的。开箱即用,这意味着它可以加载文件或 jar 文件中的条目,如果您有自定义类加载器,天空是极限:从网络加载,从数据库加载,动态生成 - 随心所欲。
解决方法是不使用文件 - 你所拥有的不是一个,所以不要试图用一个来表示它。幸运的是,所有非白痴 API 都有解决方案;除了你拥有的任何需要 File
的方法之外,还有一种方法需要 InputStream
或 URL
。如果您的 API 不提供这样的东西,请找一个更好的图书馆。但是,很可能是这样。
坏主意:
FileInputStream fis = new FileInputStream("res/sheet.xlsx");
someApi.load(fis);
好主意:
try (InputStream in = Main.class.getResourceAsStream("/res/sheet.xlsx")) {
someApi.load(in);
}
我想使用 File() 构造函数将 sheet.xlsx 加载到一个变量中。
请在下面找到我的代码片段:
public class Main {
File input = new File(Main.class.getResource("/res/sheet.xlsx"));
}
sheet文件在根项目下的资源文件夹中,并勾选了eclipse中的“用作源文件夹”选项。
File() 构造函数返回以下错误
The constructor File(URL) is undefined
尽管 getResource()
returns 一个 URL.
我是不是用错了方法?有没有更好的方法解决我的问题。
您的意见很有帮助!
你想要的根本不可能。一个 java.io.File
对象代表一个 文件 并且 不能 代表任何其他东西。它不能表示 'a sack of bytes' 或 'an entry in a jar'。然而这就是你在这里所拥有的(罐子里的一个条目)。 File API 知道这一点,并且不允许您基于 URL 创建 File 对象,因为这通常是不可能的。
另一方面,资源是由类加载器加载的。开箱即用,这意味着它可以加载文件或 jar 文件中的条目,如果您有自定义类加载器,天空是极限:从网络加载,从数据库加载,动态生成 - 随心所欲。
解决方法是不使用文件 - 你所拥有的不是一个,所以不要试图用一个来表示它。幸运的是,所有非白痴 API 都有解决方案;除了你拥有的任何需要 File
的方法之外,还有一种方法需要 InputStream
或 URL
。如果您的 API 不提供这样的东西,请找一个更好的图书馆。但是,很可能是这样。
坏主意:
FileInputStream fis = new FileInputStream("res/sheet.xlsx");
someApi.load(fis);
好主意:
try (InputStream in = Main.class.getResourceAsStream("/res/sheet.xlsx")) {
someApi.load(in);
}