Vorteile von FileReader gegenüber FileInputStream

8

Von dem, was ich in Stack Overflow lesen kann, nimmt der FileReader nur Dateien, wo der FileInputStream alles lesen kann. Aber hat der FileReader Vorteile? Ist es schneller?

Ich habe das gelesen:

  

"In FileReader können Sie keine Kodierung angeben und stattdessen verwenden   Die Standard-Kodierung von plaform, die es ziemlich nutzlos macht   die Verwendung führt zu beschädigten Daten, wenn der Code auf Systemen ausgeführt wird   mit verschiedenen Plattform-Standard-Kodierungen. "

Aber hat es nicht ganz verstanden. Was bedeuten Plattform-Standardcodierungen?

    
user3161344 04.01.2014, 22:02
quelle

6 Antworten

14

Der Hauptunterschied ist:
Stream - Byte-basiert (Lesen oder Schreiben von Bytes)
Reader - Zeichenbasiert (Lesen oder Schreiben von Zeichen)

    
Bosko Mijin 04.01.2014 22:05
quelle
12
  • Ein InputStream ist ein Stream, aus dem Sie Bytes lesen können. Normalerweise würden Sie diese Klasse nicht direkt verwenden, aber wenn Sie dies tun würden, würden Sie Binärdaten erwarten. Es hat viele verschiedene Unterklassen für die Eingabe von verschiedenen Quellen, zB FileInputStream , AudioInputStream , StringBufferInputStream und so weiter.

  • Ein InputStreamReader ist ein Wrapper für ein InputStream , der die Bytes des Streams in Zeichen umwandelt und dabei jede beliebige Kodierung verwendet. Normalerweise geben Sie beim Erstellen von InputStreamReader die Zeichencodierung an. Es gibt ein paar verschiedene Konstruktoren, mit denen Sie dies tun können. Wenn Sie Textdaten lesen möchten, können Sie ein InputStreamReader verwenden. Setzen Sie Ihre InputStream zuerst, um die Daten zu lesen, und wickeln Sie sie in ein InputStreamReader .

  • A FileReader ist eine spezielle InputStreamReader , die nur aus Dateien lesen kann und die Standard-Plattformcodierung verwendet. Mit anderen Worten: Es wird davon ausgegangen, dass die gelesene Datei gemäß den Einstellungen Ihres Betriebssystems für die Plattformcodierung erstellt wurde. Dies ist normalerweise in Ordnung; Wenn Sie jedoch Dateien mit unterschiedlichen Kodierungen lesen, sollten Sie ein FileInputStream erstellen und es in ein InputStreamReader umbrechen.

Dawood ibn Kareem 04.01.2014 22:16
quelle
2

Platform Standard Encoding, bezeichnet die vom Betriebssystem verwendete Codierung, auf der die JVM läuft.

    
Andres 04.01.2014 22:03
quelle
2

Wenn Sie in Windows sind, gehen Sie zur Systemsteuerung - & gt; Systemsteuerung für Regions- und Sprachoptionen - & gt; Erweitert dort sehen Sie Standardcodierung. FileReader verwendet immer diese Kodierung.

Was FileReader von FileInputStream unterscheidet, ist, dass FileReader zum Lesen von Textdateien in Standardcodierung dient, während FileInputStream zum Lesen von Binärdateien dient.

    
Evgeniy Dorofeev 04.01.2014 22:06
quelle
0

A FileReader ist ein Zeichenstrom, während FileInputStream ein Bytestream ist. Im ersten Fall ist die Standardcodierung relevant (z. B. InputStreamReader als Intermediumbrücke).

Wenn Sie eine andere Kodierung für einen Zeichenstrom wünschen (das ist Reader ), dann verwenden Sie:

%Vor%     
Meno Hochschild 04.01.2014 22:03
quelle
0

FileInputStream und FileOutputStream werden für die Objektserialisierung / -deserialisierung verwendet. Verwenden Sie es auch, wenn Sie mit Bytes arbeiten müssen.

In anderen Fällen benötigen Sie Zeichen, daher sollten Sie FileReader / FileWriter verwenden. Zum Beispiel:

%Vor%     
solvator 04.01.2014 23:01
quelle

Tags und Links