Что такое InputStream & Output Stream? Почему и когда мы используем их?

Subclipse для Eclipse имеет превосходный графический различный плагин при использовании SVN (подрывная деятельность) управление исходным кодом.

281
задан mccoyLBI 21 April 2017 в 06:34
поделиться

4 ответа

Цель InputStream и OutputStream - абстрагироваться от различных способов ввода и вывода: является ли поток файлом, веб-страницей или экран не имеет значения. Важно только то, что вы получаете информацию из потока (или отправляете информацию в этот поток).

InputStream используется для многих вещей, из которых вы читаете.

OutputStream используется для многих вещей, которые вы пишете на.

Вот пример кода. Предполагается, что InputStream instr и OutputStream osstr уже созданы:

int i;

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

instr.close();
osstr.close();
215
ответ дан 23 November 2019 в 01:59
поделиться

вы читаете из InputStream и записываете в OutputStream.

для Например, вы хотите скопировать файл. Вы должны создать FileInputStream для чтения из исходного файла и FileOutputStream для записи в новый файл.

Если ваши данные являются символьным потоком, вы можете использовать FileReader вместо InputStream и FileWriter вместо OutputStream, если хотите.

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();
9
ответ дан 23 November 2019 в 01:59
поделиться

InputStream используется для чтения, OutputStream - для записи. Они связаны друг с другом как декораторы, так что вы можете читать / записывать все разные типы данных из всех разных типов источников.

Например, вы можете записывать примитивные данные в файл:

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

Чтобы прочитать записанное содержимое :

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);

Вы можете использовать другие типы потоков для улучшения чтения / записи. Например, вы можете ввести буфер для повышения эффективности:

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

Вы можете записывать другие данные, такие как объекты:

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

Вы можете читать из других различных источников ввода:

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);

Для большинства входных потоков также существует поток вывода. Вы можете определить свои собственные потоки для чтения / записи специальных вещей, и есть сложные потоки для чтения сложных вещей (например, есть Streams для чтения / записи в формате ZIP).

89
ответ дан 23 November 2019 в 01:59
поделиться

OutputStream - это абстрактный класс, представляющий запись вывода. Существует много разных классов OutputStream, и они записывают данные в определенные вещи (например, экран, файлы, байтовые массивы, сетевые подключения и т. Д.). Классы InputStream имеют доступ к тем же вещам, но они считывают данные из них.

Вот хороший базовый пример использования FileOutputStream и FileInputStream для записи данных в файл, а затем чтения их обратно.

5
ответ дан 23 November 2019 в 01:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: