2017-03-14 4 views
0

Ich bin ein Anfänger in der Programmierung und ich habe eine Klasse, die einen Pfad zu einem Ordner in seinem Konstruktor erfordert. Zum Beispiel:Wie bekomme ich einen String-Wert von Ressourcen-Ordner (Java)

SomeClass class = new SomeClass(c:/folder); 

Ich brauche einen String Wert von resources Ordner (nur Pfad ohne spezifische Dateinamen in Ordner) zu erhalten. Eine Methode in dieser Klasse fügt dem Konstruktor einen Dateinamen zum Pfad hinzu und führt einige Operationen mit einer bestimmten Datei aus.

Ich versuche, dies zu tun, aber nur npe habe (fehlerhaften Code!):

ClassLoader classLoader = getClass().getClassLoader(); 
File file = new File(classLoader.getResource("src/main/resources").getFile()); 
String path = file.getAbsolutePath(); 

Also, die Frage ist: Wie String Wert von resources Ordnern zu bekommen?

+0

Nach welchem ​​Dateinamen suchen Sie? Ihr Pfad sollte dazu führen, und Sie müssen den Ressourcenpfad nicht einschließen –

+0

* "src/main/resources" * Dies ist der falsche Weg, es zu tun. Zur Laufzeit haben Sie diesen Pfad nicht. Ihre IDE kopiert den Inhalt von 'src/main/resources' in' target' oder 'bin', wo Sie über 'new File (System.getProperty (" user.dir ")," Ihren Dateinamen "auf die Kopien zugreifen können) '. –

+0

Konvertieren Sie unter Verwendung der Methode getFile() keinesfalls eine URL in eine Datei. Diese Methode * konvertiert die URL nicht in einen gültigen Dateinamen. Es gibt nur den Pfadabschnitt der URL zurück, der Prozent-Escapes für die vielen Zeichen enthalten kann, die in URLs nicht zulässig sind. Auf eine Ressource kann nicht mit java.io.File verwiesen werden. Lesen Sie die URL als URL und nicht als Datei. Siehe http://stackoverflow.com/documentation/java/2433/resources-on-classpath#t=201701111734535687024&a=remarks. – VGR

Antwort

0

Was mein Problem gelöst:

File file = new File("src/main/resources"); 
String path = file.getAbsolutePath(); 

Also, ich String Pfad zu resources Ordner einsehen.

Verwandte Themen