В этой статье описываются различия и использование потоков символов Java и байтовых потоков. Поделитесь этим для вашей ссылки, следующим образом:
Основное различие между потоками байтов и потоками символов - это их метод обработки
Классификация потока:
1. байтовый поток Java
InputStream является предком всех байтовых входных потоков, в то время как OutputStream является предком всех выходных потоков байтов.
2. Java Stecmance Stream
Читатель является предком всех потоков считывания строки ввода, в то время как писатель является предком всех выходных строк.
InputStream, OutputStream, Reader и Writer - все это абстрактные классы. Так что вы не можете просто новым
Байтовые потоки являются самыми основными. Все подклассы inputstream и outputstream в основном используются для обработки двоичных данных. Они обрабатываются байтами, но в действительности много данных - это текст. Предлагается концепция потоков символов. Они обрабатываются в соответствии с кодом виртуальной машины, то есть для преобразования наборов символов. Они связаны с помощью InputStreamReader и OutputStreamWriter и фактически связаны с помощью Byte [] и String.
Проблемы китайского персонажа, которые возникают в реальном развитии, фактически вызваны непоследовательным преобразованием между потоками символов и байтовыми потоками.
При преобразовании из байтового потока в поток символов на самом деле это происходит, когда Byte [] преобразуется в строку.
public String (байтовые байты [], string charsetname)
Существует кодирование символов клавиш, которое мы обычно пропускаем, поэтому система использует операционную систему Lang
Когда поток символов преобразуется в байтовый поток, на самом деле это происходит, когда строка преобразуется в байт [],
byte [] string.getbytes (string charsetname)
То же самое верно и для многих других потоков в java.io, в основном для повышения производительности и удобства использования.
Такие как: BufferedInputStream, PipedInputStream и т. Д.
Конкретная реализация
Byte Stream FileInputStream fileOutputStream
Потоковая файла FileReader FileDeader
Единица обработки потока символов составляет 2 байтовых символов Unicode, который управляет символами, массивами символов или строками соответственно, в то время как единица обработки потока байтов составляет 1 байт, который управляет массивами байтов и байтов. Следовательно, поток символов состоит из виртуальной машины Java, преобразующей байты в 2 байта символов Unicode, поэтому он более поддерживает для нескольких языков! Если это аудиофайл, изображение или песня, используйте потоковую передачу байтов, и если он связан с китайским (текстом), используйте потоковую передачу символов.
Все файлы хранятся в байтах. То, что сохраняется на диске, не является символами файла, но символы сначала кодируются в байтах, а затем байты хранятся на диске. При чтении файлов (особенно текстовых файлов) они также читают байт -байт для формирования последовательности байтов.
Поток байтов может использоваться для любого типа объекта, включая бинарные объекты, в то время как поток символов может обрабатывать только символы или строки; 2. Поток байтов обеспечивает функцию обработки любого типа операции ввода -вывода, но он не может напрямую обрабатывать символы Unicode, в то время как поток символов может сделать это.
Байтовые потоки могут быть преобразованы в потоки символов с использованием inputeamreder outputstreamwriter
Преобразовать в BufferDreader BufferedWriter У них есть буферы, например: читать файлы с ввода потока байтового в входном вводе символов Определите поток байта:
FileInputStream fileInputStream = new FileInputStream ("d: /txt.txt"); // определить поток байта, указанный на d:/text.txt inputStreamReader inputStreamReader = new InputStreamReader (FileInputStream); // inputeReameReamer inputreaderEredeReardeReardeReardeReardeReader BufferedReader с кешемВы можете назначить контент чтения символам
String ss = new String (); string s; while ((s = bufferedReader.readline ())! = Null) {ss += s;} fileInputStream fileInputStream = new FileInputStream ("d: /txt.txt"); // Определите поток байта, указывающий на d:/text.txt inputStreamReader inputStreamReader = new InputStreamReader (fileInputStream); // преобразовать байтовый поток в inputStreamReader BufferedReader BufferedReader = new BufferedReader (inputSteamReader); // inputStreamReader преобразуется в буферный читатель с кэшем. Вы можете назначить контент чтения на символы string ss = new String (); Строка S; while ((s = BufferedReader.readline ())! = NULL) {SS += S; }Например: напишите файл из байтового потока в выходной сигнал символов
FileOutputStream fileOutputStream = new FileOutputStream ("d: /txt.txt"); // Определение файла, указывающего на d:/text.txt outputstreamwriter outpertstreamwriter = new outputStreamwriter (fileOutputStream); BufferedWriter BufferedWriter = новый BufferedWriter (outputStreamWriter); BufferedWriter.Write (s); BufferedWriter.Close (); outputStreamWriter.Close (); FileOutputStream fileOutputStream = new FileOutputStream ("d: /txt.txt"); // Определите файл, указывающий на d:/text.txt outputstreamwriter outpertstreamwriter = new outputstreamwriter (fileOutputStream); BufferedWriter BufferedWriter = new BufferedWriter (outputStreamWriter); BufferedWrite.Write (S); BufferedWriter.Clase (); outputStreamWriter.clise ();Рутина:
Конвертировать строки в байтовые потоки#Область преобразование строк в байтовые потоки
/** //// <Summary> ////////////////MOUSTER в String в Byte Stream /// </summary> /// <param name = "_ source"> string </param> /// <return> byte -поток </return> public Static Byte [] string2bytes (String Strsource) {System.io.MemoryStream MemoryStream = new System.io System.io.binaryWriter BinaryWriter = new System.io.binaryWriter (MemoreStream); BinaryWriter.Write (Strsource); byte [] buffer = memorystream.getbuffer (); возвратный буфер;}#EndregionПреобразовать байтовые потоки в строки #region Преобразуйте байтовые потоки в строки
/** ///// <summary> ////////MERSE BYTE-потоки в строки /// </summary> /// <param name = "bytdata"> Byte Streams </param> /// <return> string </returns> public Static Strings2String (byte [] bytdata) {// byte Stream-string. System.io.memorystream (Bytdata); System.io.binaryReader BinaryReader = new System.io.binaryReader (MemoreStream2); String S2 = binaryReader.readString (); вернуть S2;}#EndregionЯ надеюсь, что эта статья будет полезна для всех Java Programming.