我正在尝试按如下方式读取文件:
File imgLoc = new File("Player.gif");
BufferedImage image = null;
try {
image = ImageIO.read(imgLoc);
}
catch(Exception ex)
{
System.out.println("Image read error");
System.exit(1);
}
return image;
我有一个名为“Player.gif”的文件,如imgLoc所示,但我不知道将文件放在何处。当我尝试读取文件时,Eclipse会在哪里查找文件?
此外,是否有更好的方法从存储在项目目录中的图像文件中创建BufferedImage? (即,比通过File更好的读取图像的方法,或者在File中创建BufferedImage的更好方法)。
答案 0 :(得分:3)
查看Class.getResource和Class.getResourceAsStream的注释。这些可能是您真正想要使用的,因为无论您是在Eclipse项目的目录中运行,还是在打包完所有内容后从JAR文件运行它们都会起作用。
你可以按照以下方式使用它们:
InputStream in = MyClass.class.getResourceAsStream("Player.gif");
在这种情况下,Java会在MyClass.class文件旁边查找文件“Player.gif”。也就是说,如果完整的包/类名是“com.package.MyClass”,那么Java将在“[project] /bin/com/package/Player.gif”中查找文件。 getResourceAsStream的注释表明,如果你带有斜杠,即“/Player.gif”,那么它将在根目录(即“bin”目录)中查找。
请注意,您可以将文件放在“src”目录中,Eclipse会在构建时自动将其复制到“bin”目录。
答案 1 :(得分:2)
根据我的经验,默认情况下它似乎是包含项目目录,但有一种简单的方法可以找到:
System.out.println(new File(".").getAbsolutePath());
答案 2 :(得分:2)
在运行对话框中,您可以选择目录。默认为项目根目录。
答案 3 :(得分:0)
您是在尝试为Eclipse编写插件还是常规项目?
在后一种情况下,这不会取决于程序最终安装和执行的位置吗?
在尝试从Eclipse运行它时,我猜它会在项目工作区中找到该文件。您应该可以通过打开项目的属性对话框并查看 Resource 条目来找到它。
此外,您可以使用导入菜单选项向项目添加资源。
答案 4 :(得分:0)
任何Eclipse项目的默认根文件夹也是该应用程序的相对路径。
下面是我用于 Eclipse 4.8.0 和 Java 1.8 项目的步骤。
I -将您要与之交互的文件放在项目的BIN和SRS文件夹中,而不要放在其中一个文件夹中。
II -在您的main()方法中实现以下代码。
public static void main(String [] args) throws IOException {
FileReader myFileReader;
BufferedReader myReaderHelper;
try {
String localDir = System.getProperty("user.dir");
myFileReader = new FileReader(localDir + "\\yourFile.fileExtension");
myReaderHelper = new BufferedReader(myFileReader);
if (myReaderHelper.readLine() != null) {
StringTokenizer myTokens =
new StringTokenizer((String)myReaderHelper.readLine(), "," );
System.out.println(myTokens.nextToken().toString()); // - reading first item
}
} catch (FileNotFoundException myFileException) {
myFileException.printStackTrace(); } } // End of main()
III -如果您的逻辑需要此循环,请循环访问文件的元素。