Uso do fluxo de conversão de InputStreamReader e OutputStreamReader

Uso do fluxo de conversão de InputStreamReader e OutputStreamReader

  1. Fluxo de conversão: pertence ao fluxo de personagem
  • InputStreamReader: converta um byte de entrada em um fluxo de entrada de caracteres
  • OutputStreamReader: converte uma entrada de caractere em um fluxo de entrada de bytes
  1. Função: fornecer conversão entre o fluxo de bytes e o fluxo de bytes principal
  2. Codificação: byte, matriz de bytes convertida em string de matriz de caracteres
    Decodificação: matriz de caracteres, string convertida em byte, matriz de bytes
public classInputStreamReaderTest{
    
    
	@Test
	public void test(){
    
    
		FileInputStream fis = new FileInputStream("hello.txt");
		//如果不指定自字符集使用默认的字符集
		//InputStreamReader isr = new InputStreamReader(fis);
		//具体使用哪个字符集,要看文件在保存的时候使用的是什么字符集
		InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
		
		char[] buf = new char[20];
		int len;
		while((len = isr.read(buf)) != -1){
    
    
			String str = new String(buf,0,len);
			//输出到控制台,也可以输入到别的文件中
			System.out.println(str);
		}
		isr.close();
	}
}

Insira a descrição da imagem aqui

Conjunto de caracteres do arquivo convertido

@Test 
public void test() throws IOException{
    
    
	File file1 = new File("hello1");
	File file2 = new File("hello1");
	
	FileInputStream fis = new FileInputStream(file1);
	FileOutputStream fos = new FileOutputStream(file2);
	
	InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
	OutPutStreamWriter osw = new OutPutStreamWriter(osw,"gbk");
    
    char[] cbuf = new char[20];
    int lenth= 0;
    //读写过程
    while((lenth = isr.read(buf)) != -1){
    
    
		osw.write(cbuf,0,len);
	}
	//关闭资源
	isr.close();
	osw.close();
}
  • Para tornar mais fácil ler e lançar exceções, o desenvolvimento real usa try catch finally para garantir que os recursos sejam fechados.
  1. conjunto de caracteres
  • ASCII: American Standard Information Interchange Code, que pode ser representado por 7 bits de um byte
  • ISO8859-1: Tabela de códigos latinos, tabela de códigos europeus, representada por 8 bits de um byte
  • GB2313: Tabela de codificação chinesa da China, até dois bytes para codificar todos os caracteres
  • GBK: a tabela de codificação chinesa da China foi atualizada, incorporando mais símbolos de texto chinês, até dois bytes de codificação
  • Unicode: a codificação padrão internacional, que combina todos os caracteres usados ​​atualmente por humanos, atribui um código de caractere exclusivo a cada caractere e todos os caracteres são representados por dois bytes
  • UTF-8: método de codificação de comprimento variável, 1-4 bytes podem ser usados ​​para representar um caractereInsira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_43941676/article/details/108412735
Recomendado
Clasificación