Java 使用绝对路径时找不到文件

Java 使用绝对路径时找不到文件,java,filereader,Java,Filereader,每次我给FileReader提供完整的文件路径时,都会遇到FileNotFoundException。但是,只要在复制程序所在的同一目录中的文件后给出文件名,程序就可以正常执行 // Doesn't work FileReader in = new FileReader(files_path +"\\"+ "fileName.csv"); Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in); for

每次我给FileReader提供完整的文件路径时,都会遇到FileNotFoundException。但是,只要在复制程序所在的同一目录中的文件后给出文件名,程序就可以正常执行

// Doesn't work

    FileReader in = new FileReader(files_path +"\\"+ "fileName.csv");
    Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
    for (CSVRecord record : records) 
    {
        System.out.println(record.get(7));
    }


//Works 

    FileReader in = new FileReader("fileName.csv");
    Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
    for (CSVRecord record : records) 
    {
        System.out.println(record.get(7));
    }
//不起作用
FileReader in=新的FileReader(文件路径+“\\”+“fileName.csv”);
Iterable records=CSVFormat.EXCEL.parse(in);
用于(CSVRecord记录:记录)
{
System.out.println(record.get(7));
}
//工作
FileReader in=新的FileReader(“fileName.csv”);
Iterable records=CSVFormat.EXCEL.parse(in);
用于(CSVRecord记录:记录)
{
System.out.println(record.get(7));
}

files_path +"\\"+ "fileName.csv"
不存在。这就是您遇到此错误的原因

潜在原因:

  • 文件\u路径
    表示无效或不存在的路径
  • files\u路径
    本身以反斜杠结束(尽管这不会在Windows上造成那么多问题)
  • 您不在Windows上,在这种情况下,您需要使用正斜杠作为文件分隔符。正如注释中已经建议的,使用Java常量
    File.separator
    独立于平台

使用File.separator而不是“\\”这与apache commons csv完全无关,你不这么认为吗?胡乱猜测:文件路径是错误的?@FlorianAlbrecht是的..完全同意你的看法。。但是,当我给出文件的绝对路径时,我无法找到问题所在。。所以我认为apache commons csv可能存在一些问题。对不起。。忘记提到文件路径的值。。file_path=“D://Currentpro//NewFolder”@Kspace你真的是说,有两个斜杠吗?没有。。就一个。。sorry@Kspace将此信息添加到您的问题中。此外,在调用
FileReader
构造函数之前,您应该将整个路径存储到字符串变量中,并将其打印到
System.out
。然后,您可以轻松地验证这是否是有效路径。在Windows上,请尝试用
File.separator
替换路径中的前斜杠。