IO corrientes del flujo de caracteres

flujo de caracteres

    (1) Operación de datos flujo de bytes no es particularmente conveniente chino, por lo que no han sido corriente convertida.

       Función es convertir el flujo de la corriente de bytes en una corriente de caracteres a utilizar.

    (2) convertir la corriente es en realidad un flujo de caracteres

        = + Código de caracteres flujo flujo de bytes mesa

    (3) la tabla de códigos

        A: es un valor numérico que corresponde a los caracteres y una mesa que consiste en

        B: tabla de codificación común

            ASCII

            ISO-8859-1

            GB2312

            GBK

            GB18030

            UTF-8

        C: secuencia de codificación problema

            Código: convertirse capaz de entender no leer

                String - byte []

            Decodificación: no se puede leer en el puede entender

                byte [] - Cadena


 

/*

 * String(byte[] bytes, String charsetName):通过指定的字符集解码字节数组

 * byte[] getBytes(String charsetName):使用指定的字符集合把字符串编码为字节数组

 *

 * 编码:把看得懂的变成看不懂的

 * String -- byte[]

 *

 * 解码:把看不懂的变成看得懂的

 * byte[] -- String

 *

 * 要发送一段文字:

 *         今天晚上在老地方见

 *

 *         发送端:今 -- 数值 -- 二进制 -- 发出去

 *         接收端:接收 -- 二进制 -- 十进制 -- 数值 -- 字符 -- 今

 *

 *         今天晚上在老地方见

 */

public class StringDemo {

    public static void main(String[] args) throws UnsupportedEncodingException {

        String s = "你好";

        //String-byte[]

        byte[] bys = s.getBytes(); // [-60, -29, -70, -61]

        System.out.println(Arrays.toString(bys));



        // byte[] -- String

        String ss = new String(bys); // 你好

        System.out.println(ss);

    }

}

    (4) IO cuestiones y codificación corriente método

        R: OutputStreamWriter

            OutputStreamWriter (OutputStream OS): La codificación predeterminada, GBK conversión de flujo de caracteres de datos es una corriente de bytes

            OutputStreamWriter (os OutputStream, Cadena charsetName): de acuerdo con la codificación especificada. La conversión de flujo de caracteres de datos es un flujo de bytes

           métodos:

               pública de escritura vacío (int c): escribe una letra

               pública de escritura vacío (char [] cbuf): Escribir una matriz de caracteres

               Parte de escribir una matriz de caracteres: escritura public void (char [] cbuf, int off, int len)

               pública de escritura void (String str): escribir una cadena

               escritura public void (String str, int off, int len): Escribir parte de una cadena

            preguntas de la entrevista: la diferencia entre cerrar () y al ras () es?

               A: close () Cierra el objeto de secuencia, pero primero tampón de refresco. Después del cierre, el flujo no debe seguir siendo utilizados de nuevo.

               B: flush () solamente vacía la memoria intermedia después de la actualización, el objeto de secuencia pueden seguir utilizando.

        B: InputStreamReader

            InputStreamReader (InputStream es): la codificación predeterminada, GBK

            InputStreamReader (InputStream es decir, cadena charsetName): especificar la codificación

          métodos:

               int read (): lee un carácter

               int lectura (char [] CHS): lee conjunto un carácter

        C: problema de codificación es muy simple

            Mientras que puede codificar el mismo

    (5) el flujo de caracteres

        Lector

            | --InputStreamReader

                | --FileReader

            | --BufferedReader

                    Cadena readLine pública (): leer una línea de datos: una cadena que contiene el contenido de la línea, sin incluir ningún terminador de línea, si el extremo de la corriente es  

                                                              nulo

        Escritor

            | --OutputStreamWriter

                | --FileWriter

            | --BufferedWriter

                    nuevaLinea public void (): El sistema determina salto de línea

    (6) copiar el archivo de texto

          

/*

 * 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中

 *

 * 数据源:

 *         a.txt -- 读取数据 -- 字符转换流 -- InputStreamReader -- FileReader -- BufferedReader

 * 目的地:

 *         b.txt -- 写出数据 -- 字符转换流 -- OutputStreamWriter -- FileWriter -- BufferedWriter

 */

public class CopyFileDemo2 {

    public static void main(String[] args) throws IOException {

        // 封装数据源

        BufferedReader br = new BufferedReader(new FileReader("a.txt"));

        // 封装目的地

        BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));



        // 方式1:一次读写一个字符数组

        //char[] chs = new char[1024];

        //int len = 0;

        //while ((len = br.read(chs)) != -1) {

            //bw.write(chs, 0, len);

            //bw.flush();

        //}



        //方式2:一次读取一行数据

        String line = null;

        while ((line = br.readLine()) != null) {

            bw.write(line);

            bw.newLine();

            bw.flush();

        }



        // 释放资源

        bw.close();

        br.close();

    }

}

 

Publicados 114 artículos originales · ganado elogios 52 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/Smile_Sunny521/article/details/89703926
Recomendado
Clasificación