2010-04-23 2 views

Antwort

23

Nutzen Sie den Klassenpfad.

ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 
URL url = classLoader.getResource("path/to/folder"); 
File file = new File(url.toURI()); 
// ... 
+3

Wenn von "path/to/Ordner" meinen Sie, dass ich müssen Sie den Pfad zum Projektordner einfügen, was ist der Punkt drin ....? –

+5

Es ist relativ zum Klassenpfadstamm. Sie brauchen nicht 'c:/absolute/pfad/zu/java/program' davor. Probiere das oben genannte aus. Drucken Sie das Ergebnis von 'URL' oder' Datei'.Spielen Sie damit und Sie werden es verstehen. – BalusC

+0

Ich verstehe immer noch nicht, was ich anstelle von -> "Pfad/zu/Ordner" –

0

können Sie prüfen, diesen Beispielcode zu verstehen, wie Sie den relativen Pfad den Beispielcode Java zugreifen können

import java.io.File; 

public class MainClass { 

    public static void main(String[] args) { 

    File relative = new File("html/javafaq/index.html"); 

    System.out.println("relative: "); 
    System.out.println(relative.getName()); 
    System.out.println(relative.getPath()); 
    } 
} 

Hier getPath wird den relativen Pfad der Datei angezeigt werden soll.

+6

Dies ist der falsche Weg. Der Pfad wird relativ zum Arbeitsverzeichnis sein. I.e. der Ordner, von dem aus ** Sie ** das Programm ausgeführt haben, nicht der Ordner, in dem das Programm selbst läuft. Verwenden Sie niemals relative Pfade in 'java.io.File', das ist nur Portabilitätsproblem. – BalusC

+0

@BalusC, Können Sie einen anderen Weg vorschlagen? – gmhk

+0

Ich habe das bereits in dieser Frage beantwortet. – BalusC

0

In Android wird auf Metadaten auf Anwendungsebene über die Referenz Context zugegriffen, von der eine Aktivität abgeleitet ist.

Zum Beispiel können Sie das Quellverzeichnis über die getApplicationInfo().sourceDir Eigenschaft abrufen. Es gibt auch Methoden für andere Ordner (Anlagenverzeichnis, Datenverzeichnis, Datenbankverzeichnis usw.).

+0

Ich habe nicht gefunden, wie kann ich den App-Pfad mit diesem bekommen.Sie können genauer sein? –

+0

Auf diese Weise kann ich nur Ordner erhalten, die im Paket enthalten sind. Ich brauche einen relativen Pfad zu einem Ordner, den ich im Projekt erstellt habe (nicht im Paket). Ordner wie Assets. Können Sie mir die Funktion geben, die es tun kann? –

18

Suchen Sie den Stammordner der Anwendung? Dann würde ich verwenden

String path = getClass().getClassLoader().getResource(".").getPath(); 

um tatsächlich "herauszufinden, wo ich bin".

+0

Ich habe das schon mal probiert und bekomme "/" aber das stimmt nicht. (Ursache, wenn ich versuche, eine Datei zu finden, existiert sie nicht) –

+0

Auf welcher Plattform/Betriebssystem laufen Sie? Nur "/" würde auf Unix/linux/OSX hinweisen, und dass Sie Ihre Anwendung über den Root-Pfad des Dateisystems ausführen. Wenn das nicht stimmt, geben Sie bitte weitere Informationen an. – Kennet

+1

Mein Betriebssystem ist win7 der Pfad ist: "D: \ Eclipse \ Workspace \ Projektname" Vergessen Sie nicht, dass dies eine Android-App ist, die ich mit Emulator –

6
File relativeFile = new File(getClass().getResource("/icons/forIcon.png").toURI()); 
myJFrame.setIconImage(tk.getImage(relativeFile.getAbsolutePath())); 
1

Damit ich mein Projekt Weg gefunden:

new File("").getAbsolutePath(); 

diese Rückkehr "c: \ Projekte \ Beispielprojekt"

-1

Im Allgemeinen möchten wir Bilder, txt, doc und etc Dateien in unserem Java Projekt und spezifischen Ordner wie/images hinzufügen. ich auf der Suche gefunden, die in JAVA, wir Pfad von Wurzel bekommen können in Ordner, die wir als, geben Sie

String myStorageFolder= "/images"; // this is folder name in where I want to store files. 

String getImageFolderPath= request.getServletContext().getRealPath(myStorageFolder); 

Hier ist Request-Objekt von HttpServletRequest. Es wird der gesamte Pfad vom Ordner Root zum Ordner/images abgerufen. Sie erhalten eine Ausgabe wie,

C: \ Benutzer \ STARK \ Workspaces \ MyEclipse.metadata.me_tcat7 \ webapps \ Javaproject \ images