Convert to try-with-resources przy uruchamianiu programu

0

Jestem początkujący w Javie i nie wiem dlaczego ten kod nie działa?

package R04;

import java.util.Scanner; // Potrzebne, by móc używać klasy Scanner.
import java.io.*;          // Potrzebne, by móc używać klasy File i wyjątków IOException.

/**
   Ten program wczytuje dane z pliku.
*/

public class FileReadDemo
{
   public static void main(String[] args) throws IOException
   {
      // Tworzenie obiektu klasy Scanner do pobierania danych z klawiatury.
      Scanner keyboard = new Scanner(System.in);

      // Pobieranie nazwy pliku.
     System.out.print("Podaj nazwę pliku: ");
      String filename = keyboard.nextLine();

      // Otwieranie pliku.
      File file = new File(filename);
      Scanner inputFile = new Scanner(file);

      // Wczytywanie wierszy z pliku do momentu pobrania wszystkich danych.
      while (inputFile.hasNext())
      {
         // Wczytywanie następnego imienia.
       String friendName = inputFile.nextLine();

       // Wyświetlanie ostatniego wczytanego imienia.
       System.out.println(friendName);
     }

     // Zamykanie pliku.
      inputFile.close();
   }
}

Oto błąd

Podaj nazwę pliku: plik
Exception in thread "main" java.io.FileNotFoundException: plik (Nie ma takiego pliku ani katalogu)
	at java.base/java.io.FileInputStream.open0(Native Method)
	at java.base/java.io.FileInputStream.open(FileInputStream.java:213)
	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:155)
	at java.base/java.util.Scanner.<init>(Scanner.java:639)
	at R04.FileReadDemo.main(FileReadDemo.java:24)
/home/user/.cache/netbeans/11.0/executor-snippets/run.xml:111: The following error occurred while executing this line:
/home/user/.cache/netbeans/11.0/executor-snippets/run.xml:68: Java returned: 1
BUILD FAILED (total time: 2 seconds)

1

Komunikat jest jasny - nie ma podanego pliku w bieżącym katalogu, gdzie bieżący katalog to katalog gdzie został odpalony proces Javy. Żeby się dowiedzieć w jakim katalogu jest odpalany Twój program, możesz zrobić np.:

System.out.println(System.getProperty("user.dir"));

Możesz też wpisać absolutną ścieżkę do pliku.

0

Błąd z treści posta a błąd (ostrzeżenie?) zacytowane w nazwie tematu to dwie różne sprawy. try-with-resources (lub zamykaniem strumieni w finally) też bym się zainteresował.

BTW podoba mi się stosowany styl komentarzy ;)

import java.util.Scanner; // Potrzebne, by móc używać klasy Scanner.

1 użytkowników online, w tym zalogowanych: 0, gości: 1