本帖最后由 传奇查 于 2015-11-25 19:41 编辑
感觉对你有用就给个鼓励吧~~
用eclipse写滴~
- package cn.fuxi._07io;
- /**
- * 练习:
- * 将一个中文字符串数据按照指定的编码表写入到一个文本文件中.
- * 1.目的:OutputStream,Writer
- * 2.是纯文本:Writer
- * 3.设备:硬盘File
- * FileWriter fw = new FileWriter("哒哒哒.txt");
- * fw.write("你好~");
- *
- * P.S.
- * FileWriter是用来写入字符文件的便捷类,此类的构造方法假定默认字符编码
- * 和默认字节缓冲区大小都是可接收的.
- * =============================================================
- * 任何Java识别的字符数据使用的都是Unicode码表,但是FileWriter写入本地
- * 文件使用的是本地编码,也就是GBK码表.
- * 而OutputStreamWriter可使用指定的编码将要写入流中的字符编码成字节.
- *
- * P.S.
- * UTF-8编码,一个中文三个字节.
- * =============================================================
- * 需求:打印d.txt文件中的内容至控制台显示.
- * 原因分析:由于源文件中是UTF-8编码的"您好",6个字节.
- * 使用FileReader类是用GBK编码进行读取,6个字节代表3个字符,并且按照GBK进行编码
- * 因此才出现以上结果.
- * =============================================================
- * 需求:打印之前的文字的内容到控制台显示.
- * 原因分析:由于c.txt文件中是GBK编码的"您好",4个字节.
- * 使用InputStreamReader类是用UTF-8编码经行读取,由于GBK编码的字节使用UTF-8
- * 没有对应字符,因此用"?"进行代替.
- * =============================================================
- * 需求:按照指定编码写字符到指定文件中.
- * 如过需求中已经明确指定了编码表.那就不可以使用FileWriter,应为FileWriter内
- * 部使用的默认的本地编码表.只能使用其父类,OutputStreamWriter.
- * OutputStreamWriter接收一个字节流输出对象,既然是操作文件,那么对象应该是
- * FileOutputStream.
- * OutputStreamWriter osw = new OutputStreamWriter(new
- * FileOutputStream("xx.txt"),charsetName);
- * 并且需要高效:
- * BufferedWriter bw = new BufferedWriter(osw);
- * =============================================================
- * 什么时候使用转换流呢?
- * 1.源或者目的对应的设备是字节流,但是操作的却是文本数据,可以使用转换作为桥梁,提高
- * 对文本操作的便捷.
- * 2.一旦操作文本涉及到具体的指定编码表时,必须使用转换流.
- * =====================================================================
- * 字符流继承体系简表
- * |--BufferedReader
- * |-->Reader |
- * | |--InputStreamReader --- FileReader
- * 字符流 |
- * | |--BufferedWriter
- * |-->Writer |
- * |--OutputStreamWriter --- FileWriter
- * =====================================================================
- * 字节流继承体系简表
- * |--FileInputStream
- * |-->InputStream |
- * | |--FilterInputStream --- BufferedInputStream
- * 字节流 |
- * | |--Writer
- * |-->OutoutStream|
- * |--FilterOutputStream --- BufferedOutputStream
- * =====================================================================
- */
- import java.io.*;
- public class _08TransformStreamTest {
- public static void main(String[] args) throws IOException {
- writeText();
- ReadText();
- ReadText2();
- }
- public static void writeText() throws IOException{
- FileWriter fw = new FileWriter("哒哒哒.txt");
- fw.write("你好");
- fw.flush();
- fw.close();
- }
- public static void ReadText() throws IOException{
- FileReader fr = new FileReader("哒哒哒.txt");
- char[] buf = new char[10];
- int len = fr.read(buf);
- String s = new String(buf,0,len);
- System.out.println(s);
- fr.close();
- }
- public static void ReadText2()throws IOException{
- InputStreamReader isr = new InputStreamReader(new FileInputStream("哒哒哒.txt"),"UTF-8");//或者Unicode
- char[] buf = new char[10];
- int len = isr.read(buf);
- String s = new String(buf,0,len);
- System.out.println(s);
- isr.close();
- }
- }
复制代码 输出结果:
你好
??
感觉对你有用就给个鼓励吧~~
|
|