day18IO概述& 字符流FileWriter FileReader

来源:互联网 发布:网络流量监视软件 编辑:程序博客网 时间:2024/05/22 03:10

<1 IO流(概述)>

按照操作的数据分为两种:字节流、字符流。

<2 IO流(FileWriter)>

package day18;import java.io.FileWriter;import java.io.IOException;/** * 字符流和字节流: * 字节流两个基类: * InputStream OutputStream * * 字符流两个基类: * Reader Writer * * 先学习一下字符流的特点。 * * 既然IO流是用于操作数据的, * 那么数据的最常见体现形式是:文件。 * * 那么先以操作文件为主来演示。 * * 需求:在硬盘上,创建一个文件并写入一些文字数据。 * * 找到一个专门用于操作文件的Writer自雷对象。FileWriter。 * 后缀名是父类名,前缀名是该流对象的功能。 * Created by Administrator on 2017/1/29. */public class Test1 {    public static void main(String[] args) throws IOException {        //创建一个FileWriter对象。该对象一被初始化,就必须要明确被操作的文件。        //而且该文件会被创建到指定的目录下。如果该目录下已有同名文件,将被覆盖。        //其实该步就是在明确数据要存放的目的地。        FileWriter fw = new FileWriter("demo.txt");        //调用write方法,将字符串写入到流中。        fw.write("abcde");        //刷新流对象中的缓冲中的数据。        //将数据刷到目的地中.//        fw.flush();////        fw.write("abc");//        fw.flush();        //关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。        //将数据刷到目的地中。        //和flush的区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。        fw.close();//        fw.write("haha");    }}


<3 IO流(IO异常处理方式)>

package day18;import java.io.FileWriter;import java.io.IOException;/** * IO异常的处理方式。 * Created by Administrator on 2017/1/29. */public class FileWriterDemo2 {    public static void main(String[] args){        //在外边建立引用,在内部进行初始化        FileWriter fw = null; //调用底层资源        try {            fw = new FileWriter("demo.txt");            fw.write("abcdefg"); //数据写入到“流”里面了        } catch (IOException e) {            System.out.println("catch:" + e.toString());        }finally {            try {                if(fw != null) //一定要进行判断!                fw.close();            } catch (IOException e) {                System.out.println(e.toString());            }        }    }}
<04 IO流(文件的读写)>

package day18;import java.io.FileWriter;import java.io.IOException;/** * 演示对已有文件的数据续写。 * Created by Administrator on 2017/1/29. */public class FileWriterDemo3 {    public static void main(String[] args) throws IOException {        //传递一个true参数,代表不覆盖已有的文件。并在已有文件的末尾处进行数据续写。        FileWriter fw = new FileWriter("a.txt", true);        fw.write("nihao\nxiexie");        fw.close();    }}
<05 IO流(文本文件读取方式一)>

package day18;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;/** * Created by Administrator on 2017/1/29. */public class FileReaderDemo {    public static void main(String[] args) throws IOException {        //创建一个文件读取流对象,和指定名称的文件相关联。        //要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException。        FileReader fr = new FileReader("demo.txt");        //调用读取流对象的read方法        //read():一次读一个字符。而且会自动往下读。        int ch = 0;        while ((ch = fr.read()) != -1){            System.out.println((char)ch);        }     /*   while (true){            int ch = fr.read();            if(ch == -1)                break;            System.out.println("ch=" + (char)ch);        }*///        int ch = fr.read();//        System.out.println("ch=" + (char)ch);        fr.close(); //调用的是Windows的read方法。    }}
<06 IO流(文本文件读取方式二)>

package day18;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;/** * 第二种方式:通过字符数组进行读取。 * Created by Administrator on 2017/1/30. */public class FileReaderDemo2 {    public static void main(String[] args) throws IOException {        FileReader fr = new FileReader("demo.txt");        //定义一个字符数组,用于存储读到的字符。        //该read(char[])返回的是读到的字符个数.        char[] buf = new char[1024];        int num = 0;        while((num=fr.read(buf)) != -1){            System.out.println(new String(buf, 0, num));        }        fr.close();    }}
<07 IO流(文本文件读取练习)>

package day18;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;/** * 读取一个.java文件,并打印在控制台上。 * Created by Administrator on 2017/1/30. */public class FileReaderTest {    public static void main(String[] args) throws IOException {        FileReader fr = new FileReader("demo.txt");        char[] buf = new char[1024];        int num = 0;        while((num = fr.read(buf)) != -1){            System.out.println(new String(buf, 0, num));        }        fr.close();    }}
<08 IO流(拷贝文本文件)>

package day18;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;/** * 将c盘一个文本文件复制到D盘 * 复制的原理: * 其实就是将C盘下的文件数据存储到D盘的一个文件中。 * * 步骤: * 1. 在D盘创建一个文件。用于存储C盘文件中的数据。 * 2. 定义读取流和C盘文件关联。 * 3. 通过不断的读写完成数据的存储。 * 4. 关闭资源。 * Created by Administrator on 2017/1/30. */public class CopyTest {    public static void main(String[] args) throws IOException {//        copy_1();        copy_2();    }    //从C盘读一个字符,就往D盘写一个字符    public static void copy_1() throws IOException {        //创建目的地。        FileWriter fw = new FileWriter("Demo_copy.txt");        //与已有文件关联。        FileReader fr = new FileReader("demo.txt");        int ch = 0;        while((ch = fr.read()) != -1){            fw.write(ch);        }        fw.close();        fr.close();    }    public static void copy_2(){        FileWriter fw = null; //局部变量都要初始化一些        FileReader fr = null;        try{            fw = new FileWriter("copy.txt");            fr = new FileReader("demo.txt");            char[] buf = new char[1024];            int len = 0;            while((len = fr.read(buf)) != -1){                fw.write(buf, 0, len);            }        }catch (IOException e) {            throw new RuntimeException("读写失败");        }finally {            if(fr != null){                try{                    fr.close();                }catch(IOException e){                }            }            if(fw != null)                try{                    fw.close();                }catch(IOException e){                }        }    }}
<09 IO流(拷贝文本文件图例)>









0 0
原创粉丝点击