Subclipse для Eclipse имеет превосходный графический различный плагин при использовании SVN (подрывная деятельность) управление исходным кодом.
Цель InputStream
и OutputStream
- абстрагироваться от различных способов ввода и вывода: является ли поток файлом, веб-страницей или экран не имеет значения. Важно только то, что вы получаете информацию из потока (или отправляете информацию в этот поток).
InputStream
используется для многих вещей, из которых вы читаете.
OutputStream
используется для многих вещей, которые вы пишете на.
Вот пример кода. Предполагается, что InputStream instr
и OutputStream osstr
уже созданы:
int i;
while ((i = instr.read()) != -1) {
osstr.write(i);
}
instr.close();
osstr.close();
вы читаете из 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();
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).
OutputStream - это абстрактный класс, представляющий запись вывода. Существует много разных классов OutputStream, и они записывают данные в определенные вещи (например, экран, файлы, байтовые массивы, сетевые подключения и т. Д.). Классы InputStream имеют доступ к тем же вещам, но они считывают данные из них.
Вот хороший базовый пример использования FileOutputStream и FileInputStream для записи данных в файл, а затем чтения их обратно.