Java BufferedReader/FileReader即使使用try/catch也找不到正确的路径
我试图使用BufferedReader和FileReader读取文本文件,但我经常遇到以下问题:Java BufferedReader/FileReader即使使用try/catch也找不到正确的路径,java,Java,我试图使用BufferedReader和FileReader读取文本文件,但我经常遇到以下问题: java.io.FileNotFoundException: dicomTagList.txt (The system cannot find the file specified)C:\temp\workspace\DICOMVALIDATE\dicomTagList.txt 当我将该文件放在正确的目录中,甚至能够在FileReader中使用getAbsolutePath()方法验证它时,我似乎
java.io.FileNotFoundException: dicomTagList.txt (The system cannot find the file specified)C:\temp\workspace\DICOMVALIDATE\dicomTagList.txt
当我将该文件放在正确的目录中,甚至能够在FileReader中使用getAbsolutePath()方法验证它时,我似乎无法找出为什么会发生这种情况
有人能告诉我为什么会这样吗
以下是我的代码片段:
public void readFromTextFile(File path) throws IOException
{
try
{
System.out.println(dicomList.getAbsolutePath());
String line;
BufferedReader bReader = new BufferedReader(new FileReader(dicomList));
while( (line = bReader.readLine()) != null)
{
System.out.println(line);
}
bReader.close();
}
catch(FileNotFoundException e)
{
System.err.print(e);
}
catch(IOException i)
{
System.err.print(i);
}
}
您确定文件确实存在吗?以下表达式将打印什么内容:
dicomList.exists();
在Java
Java.io.File
中,它只表示文件的路径,不一定是真正的文件。这意味着您可以创建File
对象,即使底层路径不存在。您为什么使用File
而不是Java.nio.File API?这是2015年,java.nio.file自2011年就存在了,也就是说,java 7…我使用java 6是因为我将要删除它的服务器上只安装了java 6,我没有sudo访问权限来更改,您可以使用您的JDK而不必是root,您知道…file
是“文件和目录路径名的抽象表示。”.这并不意味着它一定存在。您可以使用新文件(“/path/to/File.txt”).createNewFile()代码>如果需要,可以创建文件。File.getAbsolutePath()
方法所做的就是获取路径的绝对形式(而不是,例如,相对路径)。@ryekayo我用它作为一个例子,说明您希望创建一个尚不存在的文件
,帮助说明它只是一个抽象。这应该是一个注释,所以这个建议发现了问题,我仍然得到了负分。谢谢我告诉过你,伙计,我应该听你的。答案不应该是问题。评论,直到你知道问题是什么,然后写一个答案。除非你确信这已经是问题所在。如果是这样的话,你不应该用问题来回答