Convert to try-with-resources przy uruchamianiu programu

Convert to try-with-resources przy uruchamianiu programu
RD
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:4
0

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

Kopiuj
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

Kopiuj
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)

edytowany 1x, ostatnio: rdza
damianem
  • Rejestracja:prawie 8 lat
  • Ostatnio:4 miesiące
  • Postów:205
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.

RD
Tylko, że ten plik na 100% jest w tym katalogu projektu.
damianem
Katalog projektu nie musi się równać katalogowi gdzie jest odpalana Java
RD
Faktycznie działa, trzeba było dodać do głównego folderu NetBeansProject. Dzięki wielkie :)
V-2
  • Rejestracja:około 8 lat
  • Ostatnio:10 miesięcy
  • Postów:671
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 ;)

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

Nie ma najmniejszego powodu, aby w CV pisać "email" przed swoim adresem mailowym, "imię i nazwisko" przed imieniem i nazwiskiem, ani "zdjęcie mojej głowy od przedniej strony" obok ewentualnego zdjęcia. W drugiej firmie której już pracuję mam palących marihuanę programistów [...] piszą kod "leniwie", często nie wysilając się, rozwlekając ten kod, unikając np. programowania funkcyjnego (mówię tutaj o lambdach w javie).
edytowany 2x, ostatnio: V-2

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.