2 votes

Pourquoi le fichier que j'ouvre est-il introuvable alors qu'il existe déjà ?

Je lis un fichier sélectionné par un JFileChooser, ce qui signifie que le fichier existe et que je sais qu'il est là, mais je reçois toujours une FileNotFoundException.

J'ai codé en dur le chemin d'accès à ce fichier et cela fonctionne bien.

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));
  }

}

Comment faire pour que le fichier s'ouvre correctement ?

2voto

chooser.getSelectedFile().getName() renvoie le nom du fichier. Vous devez obtenir le chemin complet du fichier pour pouvoir l'ouvrir.

Utilice chooser.getSelectedFile().getAbsolutePath() à la place.

2voto

Benjamin Urquhart Points 1326

Comme déjà dit, getName() renvoie le nom du fichier, et non le chemin d'accès.
Si vous voulez ouvrir le fichier via un Path vous pouvez utiliser l'option toPath() fonction de File :

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

1voto

herMa694 Points 76

¿Qu'est-ce que filetoopen C'est un dossier ? Par la ligne chooser.getSelectedFile().getName() vous ne faites que dire à la JFileChooser pour obtenir simplement le nom du fichier, vous devriez essayer avec getAbsolutePath() au lieu de getName() . Et aussi changer chooser.showOpenDialog(null); por chooser.showOpenDialog(chooser); . J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X