代码之家  ›  专栏  ›  技术社区  ›  PHLAK

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

  •  51
  • PHLAK  · 技术社区  · 17 年前

    所以我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:\drive的根目录中,程序将编译并运行良好。

    Scanner myScanner = new Scanner(new File("C:\\Hankees.txt"));
    

    谢谢你的帮助!

    7 回复  |  直到 9 年前
        1
  •  79
  •   jjnguy Julien Chastang    17 年前

    你需要 "src/Hankees.txt"

    "Hankees.txt"

        2
  •  7
  •   Stephen Denne    17 年前

    项目的生成路径定义将源文件夹中的哪些资源复制到输出文件夹。通常设置为包括所有文件。

    新的运行配置默认为将项目目录用于工作目录,但这也可以更改。

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

    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
  •  7
  •   Community Mohan Dere    9 年前

    这与另一个问题非常相似。 How should I load files into my Java application?

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

    不要 要通过以下方式加载文件:

    C:\your\project\file.txt
    

    这是

    您应该使用getResourceAsStream。

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

    文件分隔符 ; 它是与系统相关的名称分隔符,为方便起见,表示为字符串。

        4
  •  5
  •   nasty pasty    17 年前

    是的,出于路径的目的,eclipse将顶层目录视为工作/根目录。

    …我只是想补充一些额外的信息。我是新来的!我想帮忙。

        5
  •  4
  •   Sudip Bhandari    8 年前

     String path = new File(".").getCanonicalPath();
    

    这提供了有关将文件和资源放在何处的宝贵信息。

        6
  •  2
  •   Rob    17 年前

    http://java.sun.com/javase/6/docs/api/java/io/File.html

    下面的班级 java.io

    Eclipse将工作目录设置为顶级项目文件夹。