getClass().getResourceAsStream als File ?

  • Themenstarter Themenstarter vip3r-de
  • Beginndatum Beginndatum
V

vip3r-de

Hallo,

ich muss eine Datei die nicht in einem festen Ordner (je nachdem wo das Programm installiert wird), liegt als File übergeben. Sinn und Unsinn des ganzen, ist es eine XML Datei einzulesen und bestimmte Werte in ein Array zu schreiben, dafür brauch ich aber wie schon gesagt ein File. Die xml und die klasse liegt hier: model/xml/*.*
Mit der Funktion
getClass().getResourceAsStream
bekomme ich aber nur einen InputStream übergeben, aber genau sowas brauch ich ebend nur als File.
Gibt es eine möglichkeit den Stream -> File zu konvertieren ?
Habe das ganze auchmal als URL versucht, mit :
getClass().getResource
aber das funktioniert ebensowenig.

hat jmd eine Idee ?

mfg
 
Zuletzt bearbeitet von einem Moderator:
Wie wärs damit:
Code:
URL url = this.getClass().getResource("/foo/bar.txt");
String absFile = url.getFile(); // gibt den absoluten Pfad zu der Datei zurück

REINHAUN!
 
hallo oliver,

danke für die antwort. das habe ich schon probiert. aber leider kommt immer eine filenotfoundexception. java.io.FileNotFoundException: file:\C:\a.jar!\res\test.txt
(Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch)

welche syntax wird denn benötigt, bzw. welcher teil der obigen zeichenkette?

irgendwie komme ich damit nicht weiter. ich möchte gerne in einem jararchiv mehrere ttf-dateien im res-ordner ablegen und wenn nötig laden, bzw. einer methode übergeben, die ein file-Objekt als parameter erwartet.

hast du vielleicht noch einen lösungsansatz?

gruß
xonauga
 
Du könntest auch wenn du gar nicht mehr weiter kommst, dass suchen der Datei dem User überlassen indem du ihn einfach in mit einem JFileChooser die Datei suchen lässt
 
hallo oliver,

danke für die antwort. das habe ich schon probiert. aber leider kommt immer eine filenotfoundexception. java.io.FileNotFoundException: file:\C:\a.jar!\res\test.txt
(Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch)

welche syntax wird denn benötigt, bzw. welcher teil der obigen zeichenkette?

irgendwie komme ich damit nicht weiter. ich möchte gerne in einem jararchiv mehrere ttf-dateien im res-ordner ablegen und wenn nötig laden, bzw. einer methode übergeben, die ein file-Objekt als parameter erwartet.

hast du vielleicht noch einen lösungsansatz?

gruß
xonauga

Bisher hat's bei mir leider auch nur mit der getResourceAsStream-Methode geklappt, Dateien aus Jars auszulesen. getResource hat leider bei mir auch noch nie funktioniert. Aber ich hab mich da auch noch nie wirklich mit beschäftigt, da ich gut mit den Streams weiterarbeiten konnte.
 
hi,
danke für den vorschlag, aber damit möchte ich nicht den user belasten. es geht um eine java bean, deren aufgabe es ist, aus oracle forms heraus einen generierten pdf-bericht zum lokalen drucker zu senden. das sollte alles im jar geregelt werden. gibts denn da keine möglichkeit?

ich kann natürlich auch direkt den windows fonts ordner ansprechen. es nervt mich einfach warum das nicht aus dem res-ordner heraus funktioniert.

gruß
gunnar
 
Womit verarbeitest du die XML Datei denn? Die meisten XML Parser können mit InputStreams arbeiten, womit getResourceAsStream() ausreichen würde.

Gruß
Ollie

BTW. die info, dass das zu ladende File in einem JAR liegt, hast du uns günstigerweise vorenthalten ;)
 
Zuletzt bearbeitet:
hallo,

wie kommst du auf xml ich muss keine xml datei verarbeiten. ich verwende eine funktion aus den pdfbox klassen um fonts zu laden.

File fontFile = new File(url.getFile()); // ttf datei aus dem res-ordner
PDTrueTypeFont.loadTTF(document, fontFile);

mit inputstreams komme ich da nicht weiter. ich warte gespannt ab, ob noch ein gute lösung kommt. aber vielen dank für die rege beteiligung - super forum hier.
 
Zurück