Java 我不能';我的代码没有得到正确的答案

Java 我不能';我的代码没有得到正确的答案,java,Java,我尝试使用以下代码从文本文件(.txt)中获取行数 package com.practice.test; import java.io.*; public class FileLines { public static void main(String[] args) { try { File fl=new File("C:\\eGurkha\\agent\\logs\\agentout.t

我尝试使用以下代码从文本文件(.txt)中获取行数

package com.practice.test;

import java.io.*;    
public class FileLines {    
    public static void main(String[] args) {            
        try
        {
            File fl=new File("C:\\eGurkha\\agent\\logs\\agentout.txt");
            if(fl.exists())
            {
                FileReader fr=new FileReader(fl);
                LineNumberReader lr=new LineNumberReader(fr);
                int lineno=0;
                while(lr.readLine()!=null)
                {
                    lineno++;
                }
                System.out.println("Numer of lines in the file is : "+lineno);
                lr.close();
            }
            else
            {
                System.out.println("File does not exsist");
            }
        }
        catch(IOException ioe)
        {
            ioe.printStackTrace();
        }
    }

}
但我无法读取该文件,以下输出显示了我执行上述代码时的情况

输出

File does not exsist

请帮助我……

您使用的是哪个Java版本,正如2004年的一份错误报告所提到的,
File.exists()
有时在NFS文件系统上给出错误的结果

请参阅:

如果确定文件存在,请尝试将字符
'\'
替换为
'/'

之前:

File fl = new File("C:\\eGurkha\\agent\\logs\\agentout.txt");
之后:

File fl = new File("C:\\eGurkha/agent/logs/agentout.txt");
或者更好:

File fl = new File("C:" + File.separator + "eGurkha" + File.separator + "agent" + File.separator + "logs" + File.separator + "agentout.txt");

File.separator
:与系统相关的默认名称分隔符字符,为方便起见表示为字符串。此字符串包含一个字符,即
文件。separatorChar

是否确实存在此文件?是的,该文件位于该位置…并且该文件存在并且您对其具有读取权限?
该文件位于该位置。
-您是如何检查的?你能在命令shell上用
dir
检查一下并向我们展示输出吗?@kaviarasu既然你接受了这个正确的答案,我想知道这是否真的解决了你的问题。通常,
/
和`\\`都应该以相同的方式工作,至少在Windows@Andreas-始终使用
File.separator
。是执行独立于平台的程序的正确方法。这取决于用例。如果文件分隔符对最终用户可见,我同意。但无论如何,这并不能从问题中解释问题
File.exists()
应该返回相同的文件分隔符。@Andreas-例如,我使用Linux(Debian)和
System.out.println((新文件(“/home/biagio/Java Workspace”).exists()
打印出
true
,但是
System.out.println((新文件(“/home\\biagio\\Java Workspace”)).exists()打印出
false
。在本例中,Linux不允许使用“\`分隔符。是的,您在Linux/Unix上是正确的,但OP显然在Windows上。这就是我好奇的原因,但无论如何。。。