从零双排java之转换流

 * 转换流概念及流程

 * OutputStreamWriter(字符流通向字节流的桥梁)

 * 1.程序中写入字符时  先使用转换流 根据转换流想查询的码表格式去查询 

 * 2.如果查的是GBk格式,那么一个中文字符就查到了两个字节的  字节编码

 * 3.这个字节编码给到了构建转换流时  传入的字节流

 * 4.通过这个字节流按字节写到文件中

 * 转换流:可以查询对应的码表

 * 

 * 默认UTF-8格式写的文件  拿到  windows系统读取

 * windows默认使用GBK格式来读取文件   会出现乱码

 * 转换流可以  根据你想要的编码格式  进行读写

 * 读写时可以设置编码格式


两种创建转换流的构造方法

 * 1.需要字节输出流(不传编码格式  默认使用的是系统的编码格式)

 * 2.编码格式的名字 (UTF-8,GBK 不区分大小写)

	public static void getUTF8() throws IOException {
		// 创建一个字节输出流
		FileOutputStream fos = new FileOutputStream("/Users/lanou/Desktop/Test/UTF8.txt");
		// 创建一个转换流
		OutputStreamWriter osw = new OutputStreamWriter(fos);
		// 写文件
		osw.write("春风十里");
		// 注意:一般只关外层的 流就可以了
		osw.close();

	}

	public static void getGBK() throws  IOException {
		// 创建一个字节输出流
		FileOutputStream fos = new FileOutputStream("/Users/lanou/Desktop/Test/GBK.txt");
		// 按GBK格式写入文件
		OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");
		osw.write("春风十里");
		osw.close();
	}

转换流读取文件

// 按UTF-8格式读文件
	public static void GetFileByUTF8() throws IOException {
		// 创建一个字节输入流
		FileInputStream fis = new FileInputStream("/Users/lanou/Desktop/Test/UTF8.txt");
		InputStreamReader isr = new InputStreamReader(fis);
		int len = 0;
		char[] c = new char[1024];
		while ((len = isr.read(c)) != -1) {
			System.out.println(new String(c, 0, len));
		}

	}


猜你喜欢

转载自blog.csdn.net/jsymax/article/details/80500928