即使它在我的工作目录中,java 也无法从文本文件中进行扫描

import java.util.Scanner;

import java.io.*;

public class scanners {


    public static void main(String[] args) {

        File testFile = new File("names.txt");

        // Scanner sc = new Scanner(testFile);

        System.out.println(System.getProperty("user.dir"));

    }

}

这段代码的输出是C:\Users\steve\eclipse-workspace\a3,我把我的names.txt放在这个文件夹中。但是,当我取消注释创建扫描仪对象的代码时,我得到一个FileNotFoundException. 我究竟做错了什么?


编辑

import java.util.Scanner;

import java.io.*; 


public class scanners {


public static void main(String[] args) {

    Scanner sc = null;

    try {

        sc = new Scanner(new File("names.txt"));

    }

    catch(FileNotFoundException e) {

        System.out.println("Problem reading the data file. Returning null for Scanner"

                        + "object. Problems likely to occur." + e);

    }


    System.out.println(sc.nextLine());


}

}

出于某种原因,这种格式可以正常工作,但我之前发布的格式却没有。我真的不知道为什么。


开心每一天1111
浏览 165回答 3
3回答

开满天机

我认为很可能代码实际上并未在您认为的目录中运行。如果替换File testFile = new File("names.txt");为File testFile = new File("C:\Users\steve\eclipse-workspace\a3\names.txt");,它会起作用吗?如果是这样,请在 eclipse 中检查您的运行配置以确保您实际上在该文件夹中运行

不负相思意

尝试在eclipse中直接添加文本文件,在包资源管理器中右键单击您的项目并添加->未命名的文本文件,将其保存为names.txt。您可能还使用隐藏文件类型将其命名为 names.txt,因此现在称为 names.txt.txt,有时我会遇到这种情况:D

江户川乱折腾

systemproperty 'user.dir' 指的是用户的主目录。这与“当前工作目录”不同,后者是解析相对路径的目录。在您的情况下,这两个显然不相等。你可以选择这个:new File(getSystemProperty("user.dir"), "names.txt");或者你可以指定一个绝对路径并记住在java中反斜杠是字符串转义符,所以,看起来像:new File("C:/Users/steve/eclipse-workspace/a3/names.txt");或者:new File("C:\\Users\\steve\\eclipse-workspace\\a3\\names.txt");或者如果这个 names.txt 东西与你的类文件在同一个地方:new Scanner(ClassYouAreIn.class.getResourceAsStream("names.txt"), StandardCharsets.UTF_8);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java