2016-11-20 9 views
-2

Ich versuche, mehr über das Lesen von Dateien in Java zu lernen.Kann nicht aus meinem src/main/resources-Verzeichnis lesen

Zur Zeit habe ich einige Code, der eine Datei aus dem Verzeichnis gelesen werden:

File file = new File(getClass().getResource(fileName).getPath()); 

    try (Scanner scanner = new Scanner(file)) { 

     while (scanner.hasNextLine()) { 
      String line = scanner.nextLine(); 
      result.append(line).append("\n"); 
     } 

     scanner.close(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

Mein Problem ist, wenn ich versuche, meine Datei in das Verzeichnis resources zu bewegen.

File file = new File(getClass().getClassLoader().getResource(fileName).getFile()); 

kann ich die Datei aus dem Ressourcen-Verzeichnis mit einem Inputstream lesen, aber ich versuche zu tun, dass die Art und Weise zu vermeiden. Die Dateivariable ist, was ich erwarten würde zu arbeiten, aber es tut nicht.

Hat jemand Ratschläge, wohin ich von hier aus gehen soll?

+2

* Warum * versuchen Sie es zu tun, den richtigen Weg zu vermeiden? – chrylis

+0

lebst du in einem Paket? Haben Sie Ihre Datei in der gleichen (Paket-) Verzeichnisstruktur unter '/ src/main/resources' gespeichert? –

+0

Ich versuche zu vermeiden, die Datei im Speicher zu speichern. –

Antwort

0

Dies ist, wie ich dieses Problem lösen endete:

ClassLoader classLoader = getClass().getClassLoader(); 
File file = new File(classLoader.getResource("main/resources/" + fileName).getFile()); 
0
File file = new File(getClass().getResource("/"+fileName).getFile()); 

, wenn die Datei an der Wurzel src/main/resources Ordner ist und Sie Maven verwenden.

+0

Es wirft immer noch eine java.lang.NullPointerException –

+0

Ihr Problem ist da. src/main/resources ist ein Standardklassenpfad für Ressourcen, wenn Ihr Projekt Maven (oder Gradle) verwendet, wie Sie in meiner Antwort lesen können. – davidxxx

+0

Sie sollten lesen: https: //maven.apache.org/guides/introduction/introduction-to-the-pom.html – davidxxx

-1

Könnten Sie Folgendes versuchen? ClassLoader classLoader = ClassLoader.getSystemClassLoader(); File file = new File(classLoader.getResource(fileName).getFile());

+1

Das immer noch die gleiche NullPointerException zurückgegeben –

Verwandte Themen