Frage

Jemand erklärt mir was InputStream Und OutputStream Sind?

Ich bin verwirrt über die Anwendungsfälle für beide InputStream Und OutputStream.

Wenn Sie zu Ihrer Erklärung auch einen Codeausschnitt hinzufügen könnten, wäre das großartig.Danke!

War es hilfreich?

Lösung

Das Ziel von InputStream und OutputStream ist zu abstrakt verschiedene Möglichkeiten, um Ein- und Ausgang: ob der Strom eine Datei ist, eine Web-Seite, oder der Bildschirm sollte keine Rolle spielen. Alles, was zählt ist, dass Sie Informationen aus dem Stream empfangen (oder Informationen in diesen Stream senden.)

InputStream ist für viele Dinge verwendet, die Sie lesen aus.

OutputStream ist für viele Dinge verwendet, die Sie schreiben.

Hier ist ein Beispielcode. Es nimmt die InputStream instr und OutputStream osstr wurden bereits erstellt:

int i;

while ((i = instr.read()) != -1) {
    osstr.write(i);
}

instr.close();
osstr.close();

Andere Tipps

Input zum Lesen, Output zum Schreiben verwendet. Sie werden als Dekorateure so miteinander verbunden, so dass Sie lesen können / alle verschiedene Arten von Daten aus allen verschiedenen Arten von Quellen schreiben.

Zum Beispiel können Sie primitive Daten in eine Datei schreiben:

File file = new File("C:/text.bin");
file.createNewFile();
DataOutputStream stream = new DataOutputStream(new FileOutputStream(file));
stream.writeBoolean(true);
stream.writeInt(1234);
stream.close();

den geschriebenen Inhalt zu lesen:

File file = new File("C:/text.bin");
DataInputStream stream = new DataInputStream(new FileInputStream(file));
boolean isTrue = stream.readBoolean();
int value = stream.readInt();
stream.close();
System.out.printlin(isTrue + " " + value);

Sie können andere Arten von Streams verwenden, um das Lesen / Schreiben zu verbessern. Zum Beispiel können Sie einen Puffer für Effizienz vorstellen:

DataInputStream stream = new DataInputStream(
    new BufferedInputStream(new FileInputStream(file)));

Sie können andere Daten schreiben wie Objekte:

MyClass myObject = new MyClass(); // MyClass have to implement Serializable
ObjectOutputStream stream = new ObjectOutputStream(
    new FileOutputStream("C:/text.obj"));
stream.writeObject(myObject);
stream.close();

Sie können von anderen verschiedenen Eingangsquellen lesen:

byte[] test = new byte[] {0, 0, 1, 0, 0, 0, 1, 1, 8, 9};
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(test));
int value0 = stream.readInt();
int value1 = stream.readInt();
byte value2 = stream.readByte();
byte value3 = stream.readByte();
stream.close();
System.out.println(value0 + " " + value1 + " " + value2 + " " + value3);

Für die meisten Ströme Eingang gibt es einen Ausgangsstrom, auch. Sie können Ihre eigenen Streams Lesen / Schreiben spezielle Dinge und es gibt komplexe Ströme zum Lesen komplexe Dinge (zum Beispiel gibt es Streams zum Lesen / Schreiben von ZIP-Format) definieren.

Von der Java Tutorial :

Ein Strom ist eine Folge von Daten.

Ein Programm verwendet ein Eingabe-Stream-Daten von einer Quelle zu lesen, ein Element zu einem Zeitpunkt:

 image description hier

Ein Programm verwendet ein Ausgangsstromdatum zu einem Ziel zu schreiben, ein Element zu Zeit:

 image description hier

  

Die Datenquelle und Datenziel im Bild oben kann alles sein, das hält, erzeugt oder verbraucht Daten. Offensichtlich enthält Plattendateien , sondern eine Quelle oder das Ziel kann auch ein anderes Programm, ein Peripheriegerät, eine Netzwerkbuchse oder ein Array .

Beispiel Code von oracle-Tutorial:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyBytes {
    public static void main(String[] args) throws IOException {

        FileInputStream in = null;
        FileOutputStream out = null;

        try {
            in = new FileInputStream("xanadu.txt");
            out = new FileOutputStream("outagain.txt");
            int c;

            while ((c = in.read()) != -1) {
                out.write(c);
            }
        } finally {
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
        }
    }
}

Dieses Programm verwendet Bytestreams xanadu.txt Datei in outagain.txt zu kopieren, um ein Byte zu einem Zeitpunkt, zu schreiben

Haben Sie einen Blick auf diese Frage SE weitere Details zu den erweiterten Zeichenströme zu kennen, die Wrapper auf der Byte-Streams sind:

Byte-Stream und Zeichenstrom

Sie lesen aus einem Inputstream und schreiben an einen Output.

zum Beispiel, sagen, Sie wollen eine Datei kopieren. Sie möchten gerne ein Fileinputstream erstellen aus der Quelldatei zu lesen und einen Outputstream in die neue Datei zu schreiben.

Wenn Sie Ihre Daten ein Zeichenstrom ist, können Sie einen Filereader anstelle eines Input und einem Filewriter anstelle eines Output verwenden können, wenn Sie es vorziehen.

InputStream input = ... // many different types
OutputStream output = ... // many different types

byte[] buffer = new byte[1024];
int n = 0;
while ((n = input.read(buffer)) != -1)
    output.write(buffer, 0, n);

input.close();
output.close();

Output ist eine abstrakte Klasse, die die Ausgabe geschrieben darstellt. Es gibt viele verschiedene Output Klassen, und sie schreiben, um bestimmte Dinge (wie der Bildschirm, oder Dateien oder Byte-Arrays oder Netzwerkverbindungen oder usw.). Input Klassen greifen auf die gleichen Dinge, aber sie lesen Daten in von ihnen.

Hier

ein gutes einfaches Beispiel die Verwendung von Outputstream und Fileinputdaten ein schreiben Datei, lesen sie es dann in zurück.

  

Ein Strom ist ein kontinuierlicher Strom von Flüssigkeit, Luft oder Gas.

Java Strom ist ein Fluss von Daten von einer Quelle oder in ein Ziel. Die Quelle oder das Ziel kann eine Festplatte, Speicher, Buchse oder andere Programme. Die Daten können Bytes, Zeichen oder Objekte sein. Das gleiche gilt für die C # oder C ++ Streams. Eine gute Metapher für Java-Streams ist Wasser aus einem Wasserhahn in eine Badewanne fließt, und später in eine Drainage.

Die Daten stellen den statischen Teil des Stroms; Die Lese- und Schreibverfahren des dynamischen Teil des Stroms.

InputStream einen Fluss von Daten von der Quelle darstellt, die OutputStream einen Fluss von Daten in das Ziel. Schließlich InputStream und OutputStream sind Abstraktionen über Low-Level-Zugriff auf Daten, wie zum Beispiel C-Datei Zeiger.

Strom:Für Laien sind Streams Daten, die meisten generischen Streams sind binäre Darstellungen von Daten.

Eingabestrom :Wenn Sie Daten aus einer Datei oder einer anderen Quelle lesen, wird als Stream der Eingabestream verwendet.Vereinfacht ausgedrückt fungiert der Eingabestream als Kanal zum Lesen von Daten.

Ausgabestrom :Wenn Sie Daten aus einer Quelle (Datei usw.) lesen und verarbeiten möchten, müssen Sie die Daten zunächst speichern. Das Mittel zum Speichern der Daten ist Ausgabestream.

Ein Ausgangsstrom in der Regel bis zu einem gewissen Datenziel wie eine Datei oder ein Netzwerk etc.In java Ausgangsstrom verbunden ist, ist ein Ziel, wo Daten schließlich geschrieben und es endet

import java.io.printstream;

class PPrint {
    static PPrintStream oout = new PPrintStream();
}

class PPrintStream {
    void print(String str) { 
        System.out.println(str)
    }
}

class outputstreamDemo {
    public static void main(String args[]) {
        System.out.println("hello world");
        System.out.prinln("this is output stream demo");
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top