当前位置:  开发笔记 > 编程语言 > 正文

相关文件路径如何在Eclipse中工作?

如何解决《相关文件路径如何在Eclipse中工作?》经验,为你挑选了4个好方法。

所以我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是否以某种方式对此负责?

感谢您的帮助!



1> jjnguy..:

你需要 "src/Hankees.txt"

您的文件位于源文件夹中,该文件夹不计入工作目录.

或者您可以将文件移动到项目的根目录,然后使用 "Hankees.txt"


嗯,我相信eclips的设计使你的项目的顶级目录成为程序的工作目录.我不知道为什么他们这样做.很多人都有/ bin和/ src文件夹,所以/ src不是.class文件的位置.
然后使用路径 - "players/Hankees.txt"

2> Stephen Denn..:

项目的构建路径定义源文件夹中的哪些资源被复制到输出文件夹.通常将其设置为包含所有文件.

新运行配置默认使用工作目录的项目目录,但也可以更改.

此代码显示工作目录与加载类的位置之间的差异:

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/



3> Bernie Perez..:

这与另一个问题非常相似. 我应该如何将文件加载到我的Java应用程序中?

我应该如何将文件加载到Java应用程序中?

希望通过以下方式加载文件:

C:\your\project\file.txt

这很糟糕!

你应该使用getResourceAsStream.

InputStream inputStream = YourClass.class.getResourceAsStream(“file.txt”);

你也应该使用File.separator ; 这是与系统相关的名称分隔符,为方便起见,表示为字符串.


http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#getResource(java.lang.String)说:`资源的名称是'/' - 分隔的路径标识资源的名称.所以你不应该使用File.separator.您在此处指定资源名称,而不是文件系统路径.

4> nasty pasty..:

是的,为了路径的目的,eclipse将top目录视为工作/根目录.

...只是想我会添加一些额外的信息.我是新来的!我想帮忙.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有