1. Основные входные потоки и выходные потоки <br /> Поток является одной из наиболее важных основных понятий в Java. Чтение и написание файлов, передача сети и прием, коммуникация процесса и потоковая передача используются практически во всех местах, где требуются ввод и вывод.
Для чего используется потоковая передача? Это для ввода и вывода. Почему ввод и вывод используют «поток»? Поскольку базовый единица ввода и вывода программы представляет собой байты, вход должен получить строку байтов, а вывод - отправка строки байтов. Однако во многих случаях программа не может получать все байты перед обработкой, но получить немного обработки. Например, когда вы загружаете World of Warcraft, невозможно загрузить все это в память и сохранить его на жесткий диск, но просто загрузите его и сохраните немного. В настоящее время этот метод очень подходит.
В Java каждый поток является объектом. Существует два типа потоков: входной поток (inputstream) и выходной поток (outputstream). Для входного потока вам просто нужно продолжать вытащить байты из потока;
Как получаются объекты потока? Различные внешние системы также имеют разные способы получения потоков. Например, при чтении и написании файлов вам необходимо создать объект FileInputStream/fileOutputStream, в то время как сетевая связь использует объекты сокета для получения потоков ввода и вывода. Вообще говоря, если у класса есть такие методы, как getInputstream () или getOutputStream (), это означает, что он вводит и выводит через объект потока.
InputStream - это входной поток.
Импорт java.io.file; */ public class readfiledemo {// intrice program static void main (string [] args) {string path = "c: /boot.ini"; ; Byte [0]; Если возвращаемое значение равно -1, это означает, что для чтения нет контента. в то время как (каждый раз! = -1) {// Содержимое чтения помещается в буфере, а теперь объединяет его в контент. Content = concatbytearrays (Content, Buffer, каждый раз); printStackTrace (); EM. вернуть результат слияния первого размера Bytes1 и Bytes2*/ Private Static Byte [] concatbytearrays (byte [] bytes1, byte [] bytes2, int sizeofbytes2) {byte [] resu lt = arrays.copyof (bytes1, bytes1) .length + sizeofbytes2);
Хотя это очень многословно, это действительно основное использование InputStream. Обратите внимание, что это всего лишь пример того, как прочитать байтовую строку из входного потока. На самом деле, Java предоставляет более простой способ прочитать текстовые файлы. Это будет введено позже.
Использование выходного потока - это очень простая вещь, чем чтение из потока. Вот пример:
Импорт java.io.outputstream; SaveFileDemo {public static void main (string [] args) бросает ioException {string path = "c: /now.txt"; ()) {System.err.println ("Файл не может быть создан.") ) .toString () .getBytes ()); System.out.println ("Запись файла завершена.");
Java также предоставляет другие потоковые операции, но все они расширяют или обертывают входные и выходные потери. Таким образом, эти два класса являются основой, и они должны быть поняты.
2. Читатель и писатель
Внедряются InputStream и OutputStream, а затем вводятся читатель и писатель. Эти два класса на самом деле обертывают InputStream и OutputStream. Однако они обрабатывают не байты, а персонажи. Если содержимое в потоке будет текстом, его будет легче обработать с читателем/писателем. Вот пример чтения текстового файла с помощью читателя:
Импорт java.io.filereader; Строка = "c: /boot.ini"; read (buffer))! = -1) {content += new String (Buffer, 0, count); );
Что касается того, чтобы использовать писателя для написания текстового контента в файл, я не приведу пример здесь.
Приведенный выше пример по -прежнему не является наиболее распространенным способом чтения текстовых файлов. Java предоставляет BufferedReader, который мы обычно используем для чтения текстовых файлов. Вот пример:
Импорт java.io.bufferedReader; path = "c: /boot.ini"; {Content + = "/n"; }
3. Сериализация объекта <BR /> сериализация объекта также является важным аспектом потоковых приложений. Сериализация - это преобразование объекта в строку байтов, которые можно сохранить или передавать в другую программу Java для использования. ObjectOutputStream и ObjectInputStream специально используются для сериализации и десериализации. Вот простой пример:
Import Java.io.objectOutputStream; Импорт java.io.eofexception; * Эти два класса используются для сериализации и десериализации соответственно. */ public class serializationdemo {public static void main (string [] args). F.CreatEnewFile (); PATH); Объект сохраняется в указанном файле Private Static void WritePersons (String Path), бросает ioException {person [] persons = new Person [] {новый человек ("Zhang San", 23), новый человек ("li si", 24)}}}}}}}}}}}}}}}}}}}}} ; ///////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////// Человек реализует Serializable {Private String name; public () {} public (String name, int age) {this.name = name; name = name; имя + '/' ' + ", age =" + age +'} ';
Этот пример не может читать и писать байты и символы, потому что оба класса упакованы. Выше приведено просто простой пример, и есть еще много вещей, на которые стоит обратить внимание, если вы хотите хорошо написать сериализацию. Если вы хотите более глубокое понимание сериализации, вы можете проверить ее здесь. Эта статья фокусируется только на деталях, связанных с потоковой передачей. Фактически, сериализация редко используется, потому что сериализация снижает гибкость, поэтому она обычно не используется, если вы не используете ее.