欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

文本流与字符集

程序员文章站 2022-07-12 12:36:07
...

文本数据的输入输出;

          输入;数据流,缓冲流

 

      输出;介绍向文本打印格式化的输出PrintWrite();

 

package 文本流;

import java.io.FileNotFoundException;
import java.io.PrintWriter;

/**
 * 文本流
 * @author Administrator
 *
 */
public class DemoPritf {

	public static void main(String[] args) {
		
		try {
			//创建文本写入流
			PrintWriter pw = new PrintWriter("F:Raf.txt");
			pw.println("hello");
			pw.println("java");
			pw.println("5");
			pw.close();
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 上述代码会在指定的位置创建文件,并输出上述字符

 

 

 

+++++++字符集Charset   CharsetEncode

       JAVA核心技术I 对字符集做了很大篇幅的介绍 个人认为字符集是一个很复杂的问题,我一直研究到现在还没有搞清楚字符集的装换问题,可能还需要时间吧,现将我理解的分享出来共享一下

 

 

1),字符集区分大小写;使用java找出某字符集的别名

package 文本流与字符集;

import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.util.Set;
import java.util.SortedMap;

public class DemoCharset {

	public static void main(String[] args) {
		//找出字符串的别名
		Charset cast = Charset.forName("iso-8859-1");
                 // aliases返回包含此 charset 各个别名的集合。
		Set<String> set = cast.aliases();
		for(String name:set){
			System.out.println(name);
		}
		
	}
}

 上面的代码可以找出iso-8859-1的其他名称

 

2),

获取字符集的名称

		//获取字符集的名字
		SortedMap<String, Charset> set =  Charset.availableCharsets();
		for(String name:set.keySet()){
			System.out.println(name);
		}

 

 

3),字符的编译与反编译;

package 文本流与字符集;

import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.util.Set;
import java.util.SortedMap;

public class DemoCharset {

	public static void main(String[] args) {
		System.out.println("-----编译");
		System.out.println("\r");
		// 将 Unicode 编译为字符集
		// 返回指定 charset 的 charset 对象
		Charset cast = Charset.forName("iso-8859-1");
		String str = "字符串编码字符串编码";
		// 将此 charset 中的 Unicode 字符编码成字节的便捷方法。
		ByteBuffer bb = cast.encode(str);
		byte[] by = bb.array();
		// 得到字符编码
		for (int ii = 0; ii < by.length; ii++) {
			System.out.print(by[ii]);
		}
		System.out.println("\r");
		System.out.println("+++++反编译");
		System.out.println("\r");
		// 反编译
		// 将 byte 数组包装到缓冲区中。
		ByteBuffer bytebuffer = ByteBuffer.wrap(by, 0, by.length);
		// 将此 charset 中的字节解码成 Unicode 字符的便捷方法
		CharBuffer cb = cast.decode(bytebuffer);
		// 本地字符集的方案无法表示所有的,用?表示
		System.out.println(cb.toString());
		for (int i = 0; i < cb.length(); i++) {
			// System.out.println(cb.charAt(i));

		}
	}
}

 

运行结果;

-----编译


63636363636363636363

+++++反编译


??????????