您的位置:首页 > 编程语言 > Java开发

Java转换流2

2015-08-09 17:31 441 查看
代码:

package outIn2.review;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

/*
 * CharacterCodingTransform-字符编码转换
 * I/O练习,关流的事就免了。
 */
public class CharacterCodingTransform {
	public static void main(String[] args) {
		try {
			// fileReaderDecoding1();
			// fileReaderDecoding2();
			// specialDecoding1();
			encoding();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/*
	 * encoding-编码
	 * 注意:
	 * 读数据的时候可以不关流,
	 * 也会有数据显示。
	 * 但是写入数据的时候要关流,
	 * 才可以把数据写入磁盘,
	 * 缓冲流只要刷新流就可以了,
	 * 建议是流就关闭。
	 */
	public static void encoding() throws Exception {
		/* 
		 * 采用FileWriter以默认方式编码,
		 * --如果流没有关闭,那么数据就会保存在流中。
		 * FileOutputStream+默认编码表
		 */
		FileWriter fw = new FileWriter("d:/ex/a/fileWriter01.txt");
		fw.write("每天进步一点点。。。");
		fw.close();
		FileOutputStream fout = new FileOutputStream("d:/ex/a/fileWriter02.txt");
		fout.write(123456789);// 只能写一个数
		/*
		 * 采用转换流以默认方式编码
		 * OutputStreamWriter + FileOutputStream + 默认编码表
		 */
		OutputStreamWriter outW = new OutputStreamWriter(new FileOutputStream(
				"d:/ex/a/outputStreamWriter03.txt"));
		outW.write("天天一道水题。。");
		outW.close();
		/*
		 * 采用转换流以指定编码方式编码
		 * OutputStreamWriter + FileOutputStream +指定编码表
		 */
		OutputStreamWriter outW2 = new OutputStreamWriter(new FileOutputStream(
				"d:/ex/a/utf_8_outputStreamWriter04.txt"),"UTF-8");
		outW2.write("这个应该没有问题吧。。");
		outW2.close();
	}

	/*
	 * 通过使用转换流,指定字符集,
	 * 就可以解决乱码了。
	 * specialDecoding1-指定解码
	 */
	public static void specialDecoding1() throws IOException {
		/*
		 * 使用这个方法可以解决乱码,
		 * 但是UTF-8格式会在文件头部产生一个字符,
		 * 这个是无法解决的。
		 */
		InputStreamReader inR = new InputStreamReader(new FileInputStream(
				"d:/ex/a/myUTF8.txt"), "UTF-8");
		char[] cbuf = new char[50];
		int num = inR.read(cbuf);
		while (num != -1) {
			System.out.println(new String(cbuf, 0, num));
			num = inR.read(cbuf);
		}
	}

	/*
	 * decoding-解码
	 */
	public static void fileReaderDecoding1() throws IOException {
		/*
		 * myeclipse默认设置为GBK
		 * myUTF8.txt以UTF-8格式保存
		 * 这种方式会出现乱码,
		 * 因为系统设置的编码表与文件保存的编码表不同,
		 * 所以输出的中文时乱码。
		 */
		FileReader fr = new FileReader("d:/ex/a/myUTF8.txt");
		char[] cbuf = new char[50];
		int num = fr.read(cbuf);
		while (num != -1) {
			System.out.println(new String(cbuf, 0, num));
			num = fr.read(cbuf);
		}
	}

	/*
	 * decoding-解码
	 */
	public static void fileReaderDecoding2() throws IOException {
		/*
		 * myeclipse默认设置为GBK
		 * myGBk.txt以GBK格式保存
		 * 这种方式不会出现乱码。
		 */
		FileReader fr = new FileReader("d:/ex/a/myGBK.txt");
		char[] cbuf = new char[50];
		int num = fr.read(cbuf);
		while (num != -1) {
			System.out.println(new String(cbuf, 0, num));
			num = fr.read(cbuf);
		}
	}

}


myeclipse项目,有包名。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: