Ich habe diese Zeile in meinem Programm zu konvertieren?Wie Inputstream Fileinputstream
Antwort
Verwenden Sie stattdessen ClassLoader#getResource()
, wenn der URI einen gültigen lokalen Dateisystempfad darstellt.
URL resource = classLoader.getResource("resource.ext");
File file = new File(resource.toURI());
FileInputStream input = new FileInputStream(file);
// ...
Wenn dies nicht der Fall ist (z. B. JAR), ist es am besten, sie in eine temporäre Datei zu kopieren.
Path temp = Files.createTempFile("resource-", ".ext");
Files.copy(classLoader.getResourceAsStream("resource.ext"), temp, StandardCopyOption.REPLACE_EXISTING);
FileInputStream input = new FileInputStream(temp.toFile());
// ...
Das heißt, ich sehe nicht wirklich zu tun, keinen Nutzen so, oder es muss durch eine schlechte Hilfsklasse/Verfahren notwendig werden, die FileInputStream
statt InputStream
erfordert. Wenn Sie können, reparieren Sie einfach die API, um nach einem stattdessen zu fragen. Wenn es ein Drittanbieter ist, melden Sie es als Fehler. Ich würde in diesem speziellen Fall auch Fragezeichen um den Rest dieser API setzen.
anstelle von 'FileInputStream input = new FileInputStream (temp.toFile());', ich habe 'FileInputStream input = new FileInputStream (temp.toString()); '. weil 'temp.toFile' möglicherweise eine leere (FileInputStream) Eingabe hinterlassen würde. Aus dem möglichen Grund können Sie Path.toFile überprüfen java api doc –
Lange Geschichte kurz: Verwenden Sie FileInputStream nicht als Parameter oder Variablentyp. Verwenden Sie die abstrakte Basisklasse, in diesem Fall InputStream.
Ich mag diese Antwort nicht, manchmal brauchen Sie wirklich eine FileInputStream, weil Sie Methoden von seiner API wie getChannel() zum Beispiel brauchen, und er fragte nicht, ob es Es ist eine gute Idee, keinen InputStream zu verwenden, nur wenn es möglich ist, einen Dateieingangsstrom aus einem Eingabestream zu erstellen. Sie hätten einen Kommentar verwenden können, anstatt eine neue Antwort hinzuzufügen. – arielsan
Was ist mit java.util.Properties? – sloven
Sie brauchen so etwas wie:
URL resource = this.getClass().getResource("/path/to/resource.res");
File is = null;
try {
is = new File(resource.toURI());
} catch (URISyntaxException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
FileInputStream input = new FileInputStream(is);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Aber es wird nur innerhalb Ihrer IDE, nicht in runnable JAR arbeiten. Ich hatte dasselbe Problem erklärt here.
- 1. Anfahrt Fileinputstream
- 2. Was ist der Unterschied bei der Verwendung von InputStream anstelle von FileInputStream beim Erstellen des FileInputStream -Objekts
- 3. JAVA: FileInputStream und FileOutputStream
- 4. Müssen AssetInputStream in FileInputStream konvertieren
- 5. FileNotFoundEception in FileInputStream in Android
- 6. FileInputStream für ein generisches Dateisystem
- 7. xuggler icontainer lesen von inputstream
- 8. POSTen einen Fileinputstream mit Retrofit 1.9.x
- 9. FileInputStream und ObjectInputStream
- 10. POST InputStream mit RestTemplate
- 11. RX Androiden Observable + FileInputStream erhöht Heap-Speicher
- 12. Zugriff verweigert Java FileWriter/FileInputStream
- 13. Explizit schließen FileInputStream
- 14. eine Java Fileinputstream
- 15. Process InputStream
- 16. Howto Abbrechen einer verzögerten FileInputStream-Datei öffnen
- 17. Wie wäre es, FileInputStream zu puffern?
- 18. Unable PDF-Datei kopieren Sie mit Fileinputstream
- 19. Java Fileinputstream Datei nicht gefunden
- 20. Von FileInputStream zu BufferedInputStream Konvertierung
- 21. Dateipfad/Name von InputStream
- 22. InputStream und OutOfMemory Fehler
- 23. ZipInputStream (InputStream, Charset) dekodiert ZipEntry-Dateinamen falsch
- 24. Groovy InputStream Lesen Schließung
- 25. InputStreamReader in InputStream konvertieren
- 26. Java: OutputStream und InputStream
- 27. Java InputStream zu ByteBuffer
- 28. InputStream, mark(), reset()
- 29. Unmarshall von einem InputStream
- 30. InputStream in PostgreSQL einfügen
Warum benötigen Sie einen FileInputStream? – nos
Sind Sie sicher, dass es tatsächlich eine Datei gibt, die Ihre Ressource unterstützt, und nicht einen Eintrag in einer JAR-Datei? –