FIleNotFoundException Java - 找不到txt文件

时间:2017-04-26 12:14:55

标签: java filenotfoundexception

我正在尝试将一个 .txt 文件读到eclipse控制台,但我似乎无法弄清楚问题是什么,我总是得到一个FileNotFoundException当我想要读它 - 这是我的代码到目前为止:

public static void main(String[] args) throws IOException{
    Map<String,String> map = new HashMap<String, String>();
    BufferedReader in;
    in = new BufferedReader(new FileReader("./morse-code.txt"));
    String line = "";
    while ((line = in.readLine()) != null ){
        String parts[] = line.split("\t");
        map.put(parts[0], parts[1]);
    }
    in.close();
    System.out.println(map.toString());
}

该文件位于正确的目录中,我检查了IDE是否在正确的路径中搜索:

String curDir = System.getProperty("user.dir");
System.out.println("Current sys dir: " + curDir);

但是,如果我想从文件中读取,我会收到此错误:

Exception in thread "main" java.io.FileNotFoundException: C:\Users\User\workspace\AuD\morse-code.txt (Das System kann die angegebene Datei nicht finden)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileReader.<init>(Unknown Source)
    at orkgrunzer.OrkGrunzer.main(OrkGrunzer.java:16)

我无法找到问题,也许有人可以帮我解决这个问题:)

1 个答案:

答案 0 :(得分:0)

为了保护自己不受文件系统影响,您可以将文件放在类路径的根目录下并以这种方式加载:

BufferedReader bufferedReader = new BufferedReader(
    new InputStreamReader(Class.class.getResourceAsStream("/morse-code.txt")));

如果您决定将其放在某些文件夹下面,请执行以下操作:

resources/files/codes/morse-code.txt

并将文件夹resources放在类路径上,然后您必须通过以下方式引用它:

"/files/codes/morse-code.txt"