Heim >Java >javaLernprogramm >Welche „InputStream'-Methode sollte ich verwenden, um Dateien in verschiedene Anwendungsserver zu laden?

Welche „InputStream'-Methode sollte ich verwenden, um Dateien in verschiedene Anwendungsserver zu laden?

Susan Sarandon
Susan SarandonOriginal
2024-12-16 18:47:15939Durchsuche

Which `InputStream` Method Should I Use to Load Files in Different Application Servers?

Verschiedene InputStream-Methoden zum Laden von Dateien verwenden

Um eine Datei als InputStream zu laden, müssen Programmierer mehrere Optionen in Betracht ziehen. Dieser Diskurs vergleicht und kontrastiert drei Gemeinsamkeiten Methoden:

  1. this.getClass().getClassLoader().getResourceAsStream(fileName)
  2. Thread.currentThread().getCont extClassLoader().getResourceAsStream(fileName)
  3. this.getClass().getResourceAsStream(fileName)

Methode Interpretationsunterschiede

Der Hauptunterschied zwischen diesen Methoden liegt in der Art und Weise, wie sie den bereitgestellten Dateinamen interpretieren. ClassLoader.getResourceAsStream() und Class.getResourceAsStream() verwenden unterschiedliche Ansätze:

Class.getResourceAsStream(path):

  • Betrachtet den Pfad als einen Pfad innerhalb der Paket der aufrufenden Klasse.
  • Beispiel: String.class.getResourceAsStream("myfile.txt") sucht nach „java/lang/myfile.txt“ im Klassenpfad.
  • Ein anfängliches „/“ gibt einen absoluten Pfad an, beginnend am Stammverzeichnis des Klassenpfads .
  • Beispiel: String.class.getResourceAsStream("/myfile.txt") sucht nach „./myfile.txt“ im Klassenpfad.

ClassLoader.getResourceAsStream(path):

  • Behandelt alle Pfade als absolute Pfade.
  • Beispiel: String.class.getClassLoader().getResourceAsStream("myfile.txt") und String.class.getClassLoader().getResourceAsStream("/myfile.txt") suchen beide nach „./myfile.txt“ im Klassenpfad.

Überlegungen zur Eignung

In Ihrem speziellen Fall sollten Sie die Bereitstellung in WebSphere 6.1 verwenden Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName). Diese Wahl entspricht der empfohlenen Vorgehensweise zum Laden von Ressourcen in einer Anwendungsserverumgebung. this.getClass().getResourceAsStream() kann in diesem Zusammenhang ebenfalls geeignet sein.

Zusätzliche Überlegungen für Tomcat-Benutzer

Für Tomcat-Benutzer, die ausgeführt werden Beachten Sie bei Versionen vor 8, dass sich ClassLoader.getResourceAsStream() und Class.getResourceAsStream() möglicherweise anders als erwartet verhalten. Stellen Sie sicher, dass Sie das Verhalten Ihres Codes in diesen Umgebungen gründlich bewerten.

Das obige ist der detaillierte Inhalt vonWelche „InputStream'-Methode sollte ich verwenden, um Dateien in verschiedene Anwendungsserver zu laden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn