A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

 ------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----

关于IO接口原理的第二贴                生命不息,折腾不止!向上吧,骚年!!!


第一节、接上节文件流,下面介绍FileOutputStream

FileOutputStream  类是往指定文件中写入数据的类,下面直接给出例子进行阐释,不懂得要进行第一帖的阅读,
第一帖是基础,也是精华。。。。。。。

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/** 用FileOutputStream类往指定文件中写入数据 */
public class FileOutputStreamTest {
        public static void main(String[] args) {
                FileOutputStream out = null;
                try {
                        //step1: 创建一个向指定名的文件中写入数据的FileOutputStream
                        //第二个参数设置为true表示:使用追加模式添加字节
                    out = new FileOutputStream("D:\\IOTest\\dest.txt",true);
                    
                    //step2: 写数据
                    out.write('#');
                    out.write("helloWorld".getBytes());
                    out.write("你好".getBytes());
                    
                    //step3: 刷新此输出流
                    out.flush();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) { // 捕获IO异常
                    e.printStackTrace();
                }finally{
                        if(out != null){
                                try {
                                        out.close();  //step4: 关闭输出流
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                }
        }
}

运行这个程序后,可以再D:\IOTest\看到有个dest.txt的文件存在,他的内容如下:
#helloWorld你好
与上节不同的是,用字节文件输出流往文件中写入的中文字符没有乱,经查阅资料得知:
程序先把中文字符转换成了字节数组,然后再向文件中写入,windows操作系统的记事本程序在
打开文本文件时能够自动“认出”中文字符。
下面给出自己总结的使用IO流类操作文件的一般步骤:
第一步、创建连接到指定数据源的IO流对象
第二步、利用IO流类提供的方法进行数据额读取和写入。在整个操作过程中,都需要处理java.io.IOException异常
。另外,如果是向输出流写入数据,还要在写入操作完成后调用flush()方法强制写出所有缓冲的数据。
第三步、操作完毕后,一定要调用close()方法关闭IO流对象。


第二节、关于  FileReader和FileWriter类

FileReader和FileWriter类是以字符为操作单位的文件输入流和文件输出流,故,用FileReader和FileWriter
来操作字符文本文件是最合适不过的。,下面直接附上实现负值字符文本文件的功能

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/** 用FileReader和FileWriter实现字符文本文件复制的功能 */
public class TextCopyTest {

        public static void main(String[] args) {
                FileReader fr = null;
                FileWriter fw = null;
                int c = 0;
                try {
                        //step1:创建IO流对象
                    fr = new FileReader("d:\\IOTest\\source.txt");
                    fw = new FileWriter("d:\\IOTest\\dest2.txt");
                    
int length = 0;
char[] cbuf = new char[8192];  //
while((c = fr.read(cbuf))!= -1){  //一次性读取指定字符数组长度的数据
        fw.write(cbuf, 0, length);  //一次性写入指定字符数组指定位置的数据
}
                    
                    while ((c = fr.read()) != -1) {//从源文件中读取字符
                        fw.write(c);  //往目标文件中写入字符
                    }
                    
                    fw.flush();  //刷新输出流
                } catch (FileNotFoundException e) {
                     e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                        //关闭所有的IO流对象
                        try {
                        if (null != fw) {
                                fw.close();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    try {
                        if (null != fr) {
                            fr.close();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
        }
}


运行上面程序后,在D:\IOTest目录下新产生一个文件“dest2.txt”,它的内容跟“source.txt”的内容安全相同
,中文也不会出现乱码(因为是以字符为操作对象的)



 ------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! --------

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 在13期好好努力吧,加油呵呵,.

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马