您的位置:首页 > 职场人生

黑马程序员_java IO流

2015-07-09 22:08 555 查看
------- android培训java培训、期待与您交流!
----------

1.IO流:

IO流用来处理设备之间的数据传输

Java对数据的操作时通过流的方式

Java用于操作流的对象都在IO包中

流按操作数据分为两种,字节流与字符流

流按流向分为:输入流,输出流

2.IO流常用基类

2.1字节流的抽象基类

InputStream     OutputStream

2.2字符流的抽象基类

Reader   Writer

注::由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。

如:InputStream的子类FileputStream、Reader的子类FIleReader

[java] view
plaincopy

import java.io.*;  

class  FileWriterDemo  

{  

    public static void main(String[] args) throws IOException  

    {  

        //创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。  

        //而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。  

        //其实该步就是在明确数据要存放的目的地。  

        FileWriter fw = new FileWriter("demo.txt");  

  

        //调用write方法,将字符串写入到流中。  

        fw.write("abcde");  

  

        //刷新流对象中的缓冲中的数据。  

        //将数据刷到目的地中。  

        //fw.flush();  

  

  

        //关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。  

        //将数据刷到目的地中。  

        //和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。  

        fw.close();  

    }  

}  

3.复制文件:

复制的原理:其实就是将一个盘下的文件数据存储到另一个盘中的一个文件中。

步骤:

3.1在盘中创建一个文件,用于存储盘中的文件中的数据

3.2定义读取流和盘中的文件关联

3.3通过不断的读写完成数据存储。

[java] view
plaincopy

import java.io.*;  

  

class CopyText   

{  

    public static void main(String[] args) throws IOException  

    {  

        copy_2();  

    }  

  

  

    public static void copy_2()  

    {  

        FileWriter fw = null;  

        FileReader fr = null;  

        try  

        {  

            fw = new FileWriter("SystemDemo_copy.txt");  

            fr = new FileReader("SystemDemo.java");  

  

            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)  

                {  

                }  

        }  

    }  

  

    //从C盘读一个字符,就往D盘写一个字符。  

    public static void copy_1()throws IOException  

    {  

        //创建目的地。  

        FileWriter fw = new FileWriter("RuntimeDemo_copy.txt");  

  

        //与已有文件关联。  

        FileReader fr = new FileReader("RuntimeDemo.java");  

  

        int ch = 0;  

  

        while((ch=fr.read())!=-1)  

        {  

            fw.write(ch);  

        }  

          

        fw.close();  

        fr.close();  

  

    }  

  

  

}  

4.字符流的缓冲区

缓冲区的出现提高了对数据的读写效率

对应类:bufferedWriter BufferedReader

缓冲区要结合流才可以使用

在流的基础上对流的功能进行了增强。

[java] view
plaincopy

/* 

字符读取流缓冲区: 

该缓冲区提供了一个一次读一行的方法 readLine,方便于对文本数据的获取。 

当返回null时,表示读到文件末尾。 

 

readLine方法返回的时候只返回回车符之前的数据内容。并不返回回车符。 

 

 

 

*/  

  

import java.io.*;  

  

class  BufferedReaderDemo  

{  

    public static void main(String[] args) throws IOException  

    {  

        //创建一个读取流对象和文件相关联。  

        FileReader fr = new FileReader("buf.txt");  

  

        //为了提高效率。加入缓冲技术。将字符读取流对象作为参数传递给缓冲对象的构造函数。  

        BufferedReader bufr = new BufferedReader(fr);  

          

  

        String line = null;  

  

        while((line=bufr.readLine())!=null)  

        {  

            System.out.print(line);  

        }  

  

  

        bufr.close();  

    }  

  

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