为什么找不到打开的文件,因为文件在那里

Why is the File im opening not found because the File is there

我读入了一个由 JFileChooser 选择的文件,这意味着该文件存在并且我知道它在那里,但我仍然收到 FileNotFoundException。

我硬编码了这个文件的路径并且工作正常。


JFileChooser chooser = new JFileChooser();
int rueckgabeWert = chooser.showOpenDialog(null);

if (rueckgabeWert == JFileChooser.APPROVE_OPTION)
{
  filetoopen = chooser.getSelectedFile().getName();
  Path path = Paths.get(filetoopen);
  List<String> allLines = null;
  try
  {
    allLines = Files.readAllLines(path, StandardCharsets.UTF_8);
  }
  catch (IOException e1)
  {
    e1.printStackTrace();
  }

  for (int i = 0; i < allLines.size(); i++)
  {
    System.out.println(allLines.get(i));
  }

}

如何让文件正确打开文件?

chooser.getSelectedFile().getName() returns 文件名。您需要获取文件的完整路径才能打开它。

改用chooser.getSelectedFile().getAbsolutePath()

如前所述,getName() returns 文件名,而不是路径。
如果要通过Path打开文件,可以使用FiletoPath()函数:

...
File filetoopen = chooser.getSelectedFile();
List<String> allLines = null;
try {
    allLines = Files.readAllLines(filetoopen.toPath(), StandardCharsets.UTF_8);
} catch (IOException e1) {                          
    e1.printStackTrace();
}
...

¿什么是 filetoopen,它是一个文件吗?通过行 chooser.getSelectedFile().getName() 你只是告诉 JFileChooser 只获取文件的名称,你应该尝试使用 getAbsolutePath() 而不是 getName()。并将 chooser.showOpenDialog(null); 更改为 chooser.showOpenDialog(chooser);。希望对你有帮助。