所以我2009年的新年决议是学习Java.我最近获得了"Java for Dummies",并且通过使用Eclipse重新编写它来跟随本书中的演示代码.无论如何,本书中使用相对路径的每个例子似乎都没有读取它应该读取的.txt文件.
以下是示例代码:
import java.util.Scanner; import java.io.File; import java.io.IOException; import javax.swing.JFrame; import javax.swing.JLabel; import java.awt.GridLayout; class TeamFrame extends JFrame { public TeamFrame() throws IOException { PlayerPlus player; Scanner myScanner = new Scanner(new File("Hankees.txt")); for (int num = 1; num <= 9; num++) { player = new PlayerPlus(myScanner.nextLine(), myScanner.nextDouble()); myScanner.nextLine(); addPlayerInfo(player); } add(new JLabel()); add(new JLabel(" ------")); add(new JLabel("Team Batting Aberage:")); add(new JLabel(PlayerPlus.findTeamAverageString())); setTitle("The Hankees"); setLayout(new GridLayout(11,2)); setDefaultCloseOperation(EXIT_ON_CLOSE); pack(); setVisible(true); } void addPlayerInfo(PlayerPlus player) { add(new JLabel(player.getName())); add(new JLabel(player.getAverageString())); } }
你可以在下面的屏幕截图中看到我已经包含了这个文件.
图片不再可用
另外,我已经验证了当我构建应用程序时,Hankees.txt的副本放在带有已编译的.class文件的bin文件夹中.
最后,如果我将第12行更改为以下内容并将Hankees.txt放在我的C:\驱动器的根目录中,程序将编译并运行正常.
Scanner myScanner = new Scanner(new File("C:\\Hankees.txt"));
所以基本上,我的问题是我做错了什么?或者Eclipse是否以某种方式对此负责?
感谢您的帮助!
你需要 "src/Hankees.txt"
您的文件位于源文件夹中,该文件夹不计入工作目录.
或者您可以将文件移动到项目的根目录,然后使用 "Hankees.txt"
项目的构建路径定义源文件夹中的哪些资源被复制到输出文件夹.通常将其设置为包含所有文件.
新运行配置默认使用工作目录的项目目录,但也可以更改.
此代码显示工作目录与加载类的位置之间的差异:
public class TellMeMyWorkingDirectory { public static void main(String[] args) { System.out.println(new java.io.File("").getAbsolutePath()); System.out.println(TellMeMyWorkingDirectory.class.getClassLoader().getResource("").getPath()); } }
输出可能是这样的:
C:\your\project\directory /C:/your/project/directory/bin/
这与另一个问题非常相似. 我应该如何将文件加载到我的Java应用程序中?
我应该如何将文件加载到Java应用程序中?
您不希望通过以下方式加载文件:
C:\your\project\file.txt
这很糟糕!
你应该使用getResourceAsStream.
InputStream inputStream = YourClass.class.getResourceAsStream(“file.txt”);
你也应该使用File.separator ; 这是与系统相关的名称分隔符,为方便起见,表示为字符串.
是的,为了路径的目的,eclipse将top目录视为工作/根目录.
...只是想我会添加一些额外的信息.我是新来的!我想帮忙.