IO поток
В Java потоки IO разделены на два типа: байтовые потоки и потоки символов. Как следует из названия, байтовые потоки читаются и написаны в соответствии с байтами, а символы доступны в соответствии с символами; Обычно используемые считывания файла - это потоки символов, а байтовые потоки используются в сетевой связи.
Следующая цифра - это общая структура потоков ввода -вывода в Java:
Байтовый поток
В Java байтовые потоки обычно заканчиваются потоками. Поток ввода байта называется InputStream, а выходной байт -поток называется outputStream; InputStream и outputStream - это суперклассии, представляющие все классы их ввода/вывода, и являются абстрактными классами (абстрактная)
Обычно используются байтовые потоки:
1. FileInputStream/FileOutputStream2.bufferedInputStream/bufferedOutputStream3.sequenceInputStream (потоки последовательности) 4.objectinptstream/objectOutputStream (входной и выходной поток объекта) 5.printStream (Print Stream)
Поток персонажей
В Java входной поток символов заканчивается с читателем, а выходной поток символов заканчивается автором. Например, наши общие FileReader и FileWriter являются потоками символов, а читатель и Witer являются суперклассами потоков символов ввода/вывода, а также являются абстрактными классами.
Обычно используются потоки символов:
1.FileDeader/FileWriter2.bufferedReader/BufferedWriter3
Преобразовать поток
Поток преобразования - это класс, который преобразует байтовый поток в поток символов, и есть два типа:
・ InputStreamReader ・ outputStreamWriter
InputStreamReader - это поток символов (читатель), который требует обертывания байтового потока (inputStream);
OutputStreamWriter - это поток символов (писатель), и он должен обернуть байтовый поток (outputStream)
Украсить
Цель упаковки состоит в том, чтобы добавить новые функции на основе исходного объекта. Например, BufferedReader завершает читателя, что на самом деле является улучшением функции считывателя; Оригинальный читатель может быть прочитал только одним символом и одним символом, а буферист, образованный после упаковки, имеет новую функцию: функция непосредственного чтения линии (Line Line). Интуитивно говоря, это так называемое украшение.
С точки зрения режима дизайна, это типичный декоративный режим, и его характеристики:
1. Декоративные объекты и реальные объекты имеют одинаковый интерфейс. Таким образом, клиент -объект может взаимодействовать с декоративным объектом так же, как и настоящий объект. 2. Декоративный объект может добавить некоторые дополнительные функции до или после пересылки этих запросов. Это гарантирует, что во время выполнения дополнительные функции могут быть добавлены извне, не изменяя структуру данного объекта.
Соответствует нам, что Buffered Reader и Reader - оба читатели. После упаковки функция BufferedReader усиливается, но она все еще может использоваться в качестве читателей (Ссылка на родительский класс OO может указывать на подклассы)
пример
Пример байтового потока
Вырежьте файл mp3 на несколько копий и рекомбинируйте его
Пакет cn.xdian.test; import java.io.file; import java.io.fileinputstream; импорт java.io.fileoutputstream; импорт java.io.ioexception; импорт java.io.seclenceinputstream; import java.util.enumeration; import java.ut.vector; public class java.util.enumeration; import java.ut.vector; public class java.Util.Enumeration; import java.Uut.vector; public class demo2 aTical. Throws ioException {cutfile (); // cut mp3 -файл mergeflile (); // merge mp3 файлы} // merge mp3 -public static void mergeflile () throws ioexception {file dir = new file ("/home/gavinzhou/music_test"); // Найти все файлы mp3 в векторе FileInprem Vector <FileInputStream> (); file [] files = dir.listFiles (); for (File file: files){if(file.getName().endsWith(".mp3")){vector.add(new FileInputStream(file));}}//Get the iterator through Vector Enumeration<FileInputStream> e = vector.elements();//Create a sequence stream SequenceInputStream inputStream = new SequenceInputStream(e);//Output stream FileOutputStream fileOutputStream = new FileOutPutStream ("/home/gavinzhou/conbine.mp3"); // Читать разделенную файл mp3 [] buf = new Byte [1024]; int length = 0; while ((length = inputstream.read (buf))! =-1) {fileOutputStream. FileOutputStream.Close (); inputStream.Close ();} // Cut Mp3 -Public Static void cutfile () Throws IOException {file file = new File ("/home/gavinzhou/test.mp3"); file dir = new file ("/home/gavinzhou/music_test"); // input -byte -stream -stream -streampeam = new -streampeam = filein -stream -stream streampeam = //); FileInputStream (file); // Читать файл byte [] buf = new Byte [1024*1024]; int length = 0; for (int i = 0; (length = fileInputStream.read (buf))! =-1; i ++) {fileOutputStream fileOutputStream = new FileOutputStream (новый File (dir, "part"+i+". Mp3")); fileOutputStream.write (buf, 0, length); fileOutputStream.close ();} // Закройте потоковой файл fileInputStream.close ();}}Пример потока символов
Скопируйте файл A в файл B
пакет cn.xidian.test; import java.io.bufferedReader; import java.io.bufferedwriter; import java.io.file; import java.io.filereader; import java.io.filewriter; import java.io.ioexcept File ("/home/gavinzhou/a.txt"); file desfile = new File ("/home/gavinzhou/b.txt"); // Создание входного потока BufferedReader input = new BufferedReader (new FileReader (SourceFile)); // Создание выходного потока BufferedWrite = New BufferedWriter (New FileWrite (DESFILE)); нулевой; while ((line = input.readline ())! = null) {output.write (line); output.newline ();} // Закрыть входной и выходной input.close (); output.close ();}}Пример печатного потока
пакет cn.xidian.test; import java.io.file; import java.io.fileOutputStream; импорт java.io.ioexception; импорт java.io.printStream;/*Поток печати может печатать любой тип данных. Перед печати данных данные будут преобразованы в строку, а затем напечатаны*/класс Animal {String name; String Color; Public Animal (String name, String Color) {this.name = name; this.color = color;}@переопределить публичные строки tostring () {return name: «+ this.name+" color: "+ this.color;} public class demo6 {public restamid raid. бросает ioException {/* file = new File ("/home/gavinzhou/a.txt"); // Создать потоковой печатной печатной платы PrintStream = new PrintStream (файл); // распечатать любую информацию в файл printStream.println (97); printsstream.println (3.14); printsstream.println ('a'); printsstream.println (true); Животное A = новое животное («крыса», «черное»); printsstream.println (a); // Измените стандартную систему ввода и вывода. SetSetout (PrintStream); // Стандартный выход - Screen System.out.println ("test ...."); */// Сбор информации журнала исключений. File logfile = new File ("/home/gavinzhou/test.log"); printStream logprintStream = new PrintStream (new FileOutputStream (logFile, true)); try {int c = 4/0; // Создать систему исключения. e) {e.printstacktrace (logprintStream); // вывод в файл вместо экрана}}}}Суммировать
Выше приведено все о анализе потока IO и примерах кода в Java. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на этот сайт:
Java Exploration: зашифрованные и расшифрованные примеры кода.
Java IO -потоковой анализ кода знаний, связанный с потоком
Подробная интерпретация Java IO Stream
Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!