Este artículo describe las diferencias y el uso de las transmisiones de personajes de Java y las transmisiones de bytes. Compártelo para su referencia, como sigue:
La principal diferencia entre las transmisiones de bytes y las transmisiones de caracteres es su método de procesamiento.
Clasificación de transmisión:
1. Transmisión de bytes de Java
InputStream es el antepasado de todas las secuencias de entrada de bytes, mientras que OutputStream es el antepasado de todas las secuencias de salida de bytes.
2. Transmisión de personajes de Java
Reader es el antepasado de todas las transmisiones de entrada de cadenas de lectura, mientras que el escritor es el antepasado de todas las cadenas de salida.
InputStream, OutputStream, Reader y Writer son clases abstractas. Entonces no puedes simplemente nuevo
Las transmisiones de bytes son las más básicas. Todas las subclases de InputStream y OutputStream se utilizan principalmente para procesar datos binarios. Son procesados por bytes, pero en realidad, muchos datos son texto. Se propone el concepto de transmisiones de personajes. Se procesan de acuerdo con la codificación de la máquina virtual, es decir, para convertir los conjuntos de caracteres. Los dos están relacionados a través de InputStreamReader y OutputStreamWriter, y en realidad están relacionados a través de byte [] y cadena.
Los problemas de personajes chinos que surgen en el desarrollo real en realidad son causados por una conversión inconsistente entre las corrientes de personajes y las corrientes de bytes.
Al convertir de la corriente de byte a la corriente de caracteres, en realidad es cuando el byte [] se convierte en cadena.
Public String (byte bytes [], string charsetName)
Existe una codificación de conjunto de caracteres de parámetros clave, que generalmente omitimos, por lo que el sistema utiliza el sistema operativo Lang
Cuando una corriente de caracteres se convierte en una corriente de byte, en realidad es cuando una cadena se convierte en byte [],
byte [] string.getBytes (String CharsetName)
Lo mismo es cierto que para muchas otras transmisiones en Java.io, principalmente para mejorar el rendimiento y usar la conveniencia.
Tales como: BufferedInputStream, PipeDInputStream, etc.
Implementación específica
Byte Stream FileInputStream FileOutputStream
Transmisión de personajes FileReader FileWriter
La unidad de procesamiento de la secuencia de caracteres es caracteres de 2 bytes unicode, que opera caracteres, matrices de caracteres o cadenas respectivamente, mientras que la unidad de procesamiento de flujo de bytes es 1 byte, que opera matrices de bytes y bytes. Por lo tanto, la corriente de caracteres está compuesta por una máquina virtual Java que convierte bytes en 2 bytes de caracteres Unicode, ¡por lo que es más apoyo para múltiples idiomas! Si es un archivo de audio, imagen o canción, use la transmisión de bytes y si está relacionado con chino (texto), use la transmisión de personajes.
Todos los archivos se almacenan en bytes. Lo que se conserva en el disco no son los caracteres del archivo, pero los caracteres están codificados primero en bytes, y luego los bytes se almacenan en el disco. Al leer archivos (especialmente archivos de texto), también se leen byte byte para formar una secuencia de bytes.
Se puede usar una secuencia de bytes para cualquier tipo de objeto, incluidos los objetos binarios, mientras que una secuencia de caracteres solo puede procesar caracteres o cadenas; 2. Una secuencia de bytes proporciona la función de manejar cualquier tipo de operación IO, pero no puede procesar directamente los caracteres Unicode, mientras que una secuencia de caracteres puede hacerlo.
Las transmisiones de bytes se pueden convertir en transmisiones de caracteres utilizando InputSteamReader OutputStreamWriter
Convertir a BufferDReader BufferedWriter, tienen buffers, por ejemplo: lea archivos de la entrada de transmisión de byte a la entrada de la secuencia de caracteres Definir una secuencia de byte:
FileInputStream fileInputStream = new FileInputStream("d:/text.txt");// Define a byte stream pointing to D:/TEXT.TXT InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);// Convert byte stream to InputStreamReaderBufferedReader bufferedReader = new BufferedReader(inputSteamReader);// InputStreamReader Convierte a BufferedReader con cachéPuedes asignar el contenido de lectura a los caracteres
String ss = new String (); String S; while ((s = bufferedReader.Readline ())! = NULL) {ss += s;} fileInputStream FileInputStream = new FileInputStream ("d: /Text.txt"); // Defina una secuencia de byte que apunta a D: /Text.txt InputStreamReader InputStreamReader = new InputStreamReader (fileInputStream); // Convertir la transmisión de byte a InputStreamReader BufferedReader BufferedReader = new BufferedReader (inputSteamReader); // InputStreamReader se convierte en un BufferedReader con caché. Puede asignar el contenido de lectura a la cadena de caracteres ss = new String (); Cadena S; while ((s = bufferedReader.readline ())! = null) {ss += s; }Por ejemplo: escriba un archivo desde la transmisión de byte a la salida de la secuencia de caracteres
FileOutputStream fileOutputStream = new FileOutputStream ("d: /Text.txt"); // Defina un archivo que apunta a d: /Text.txt OutputStreamWriter OutputStreamWriter = new OutputStreamWriter (FileOutputStream); BufferedWriter BufferedWriter = new New BufferedWriter (outputStreamWriter); BufferedWriter.Write (S); BufferedWriter.Close (); OutpleamWriter.Close (); FileOutputStream FileOutputStream = new FileOutputStream ("D: /Text.txt"); // Defina un archivo que apunta a D: /Text.txt OuttreStreamWriter OutputStreamWriter = new OutputStreamWriter (FileOutputStream); BufferedWriter BufferedWriter = new BufferedWriter (outputStreamWriter); BuffeDwriter.Write (S); BufferedWriter.Close (); OuttreamWriter.CLOSE;Rutina:
Convertir cadenas a transmisiones de bytes#región de converso de las cadenas a las transmisiones de bytes
/**///// <summary> //// Convertir una cadena en una transmisión de byte /// </summary> /// <param name = "_ fuente"> cadena </param> /// <surns> byte stream </return> public static byte [] String2Bytes (String Strsource) {System.io.MemoryStream MemoryStream = New System.io.MemoryStam ();) System.io.BinaryWriter binaryWriter = new System.io.BinaryWriter (MemoryStream); binarywriter.write (strsource); byte [] buffer = MemoryStream.getBuffer (); buffer de retorno;}#endregiónConvertir las corrientes de byte en cadenas #region convierte las transmisiones de bytes en cadenas
/**///// <summary> //// Convertir Byte Streams en Strings /// </summary> /// <param name = "bytData"> byte stress </param> /// <surns> string <//devuelve> public static string bytes2String (byte [] bytData) {// byte stream-> string system.io.memorysmory memorys2String System.io.MemoryStream (bytData); System.io.binaryReader binaryReader = new System.io.binaryReader (MemoryStream2); cadena s2 = binaryReader.ReadString (); return s2;}#endregiónEspero que este artículo sea útil para la programación Java de todos.