Heim >Java >javaLernprogramm >Einführung in die Verwendung von getResourceAsStream in Java
Die Verwendung von JAVA zum Abrufen von Dateien mag einfach klingen, aber für viele Neulinge wie mich ist die Beherrschung immer noch recht oberflächlich und die Erfahrung mit der Verwendung ist recht tiefgreifend. Die am häufigsten verwendete Methode ist die Verwendung der Dateiklasse von JAVA Um die Datei c:/test.txt zu erhalten, verwenden Sie File file = new File("c:/test.txt"); Was ist das Problem bei dieser Verwendung? Ich glaube, jeder weiß, dass der Pfad fest codiert ist Im JAVA-Geist sollte die Anwendung einmal erstellt und überall verfügbar sein. Aus praktischer Anwendungsperspektive wird die endgültig generierte Anwendung auch auf anderen Betriebssystemen als Windows bereitgestellt. Für Linux bedeutet die Verwendung der Wörter c:/ in der Anwendung einen Fehler . Daher sollten wir versuchen, harte Codierung zu vermeiden, das heißt, absolute Pfade direkt zu verwenden.
In der Servlet-Anwendung gibt es eine getRealPath(String str)-Methode. Obwohl diese Methode den Pfad der Datei auch dynamisch abrufen kann, ohne den absoluten Pfad direkt von Hand zu schreiben, wird diese Methode ebenfalls nicht empfohlen. , Welche Methoden müssen wir also haben, um Dateien besser zu bekommen?
Das sind die Methoden Class.getResource() und Class.getResourceAsStream(), aber viele Leute verstehen ihre Verwendung immer noch nicht, weil viele Leute ( Ich wusste zum Beispiel vor nicht allzu langer Zeit nicht, welche Parameter daran übergeben werden sollten. Natürlich haben einige Leute es bereits sehr gut genutzt, und diese Leute müssen sich nicht darum kümmern Sie kennen einige Parameter nicht oder sind nicht sehr gut darin. Jemand, der damit vertraut ist, kann es ein wenig erklären.
Zuallererst gibt es in Java die folgenden Arten von getResourceAsStream:
1. Class.getResourceAsStream(String path): Wenn der Pfad nicht mit „/“ beginnt, wird er verwendet aus dem Paket, in dem sich diese Klasse standardmäßig befindet. Ressourcen, die mit „/“ beginnen, werden aus dem
ClassPath-Stammverzeichnis abgerufen. Es wird lediglich ein absoluter Pfad durch Pfad erstellt, und letztendlich wird die Ressource von ClassLoader abgerufen.
2. Class.getClassLoader.getResourceAsStream(String path): Standardmäßig wird es vom ClassPath-Stamm abgerufen. Der Pfad darf nicht mit „/“ beginnen. Schließlich wird die Ressource durch
ClassLoader. 3. ServletContext. getResourceAsStream(String path): Standardmäßig werden Ressourcen aus dem WebAPP-Stammverzeichnis abgerufen. Es spielt keine Rolle, ob der Pfad mit „/“ unter Tomcat beginnt Dies hängt natürlich mit der spezifischen Containerimplementierung zusammen. 4. Das in der Anwendung integrierte Objekt unter Jsp ist eine Implementierung des oben genannten ServletContext.
Übrigens die Klassenlader in JAVA:
des Systems nicht erfüllt werden. Thread.currentThread.getContextClassLoader() wird auf diese Weise generiert. Wir verwenden Thread.currentThread.setContextClassLoader(), um den entsprechenden ClassLoader für den aktuellen Thread anzugeben, und rufen ihn dann mit get ab.
Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung von getResourceAsStream in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!