[黑马程序员]8 JAVA基础-IO流

来源:互联网 发布:陈欣怡药检呈阳性知乎 编辑:程序博客网 时间:2024/06/15 10:14

 ——- android培训、java培训、期待与您交流! –

IO流概念

IO流是用于处理数据传输的集合。

流有关的类和接口:
流有关类和接口
IO流体系:
IO流体系

IO流的分类

    根据处理数据类型的不同分为:字符流和字节流
      根据数据流向不同分为:输入流和输出流

字符流

package humiao;/** * 在硬盘创建一个文件,并写入一些数据 * 思路 * 1, 字节还是是字符?字符  * 2, 输入还是输出? Reder OR Writer   Writer * 3,  操作文件有一个专用的字符输出流,OutputSteamWriter的子类FileWriter * @author HM * */ import java.io.*;public class FileWriterDemo {    public static void main(String[] args)    {        //在当前路径创建一个名为“demo.txt"的文件,如果以存在将被覆盖        FileWriter fw = null;        try        {               //路径反斜杠需要写两个。            fw = new FileWriter("c:\\demo.txt");            //将字符串写入OutputStream            fw.write("abcdefghjklmnopqrstuvwxyz");            //刷新OutputStream流            fw.flush();            //关闭流;        }        catch(IOException e)        {            System.out.println(e.toString());        }        finally        {            try            {            fw.close();            }            catch(IOException e)            {                System.out.println(e.toString());            }        }    }}

续写文件

package humiao;/** * 续写文件 */import java.io.FileWriter;import java.io.IOException;/** * 对文件续写 * @author HM * */public class FileWriterDemo3 {    public static void main(String[] agrs)    {    FileWriter fw = null;    try    {        fw = new FileWriter("c:\\demo.txt",true);        fw.write("\r\n我......");    }    catch(IOException e)    {             e.printStackTrace();    }    finally    {        try        {            fw.close();        }        catch(IOException e)        {            e.printStackTrace();        }    }    }}

package humiao;
/**
* 读取c盘下的一个.java文件 存入到另一个文件
*/
import java.io.*;
public class FieldReader {
public static void main(String[] agrs) throws IOException
{

     copy();} public static void copy() {     FileReader fr = null;     FileWriter fw = null;     try     {        fr = new FileReader("c:/TemplateDemo.java");        fw = new FileWriter("c:/demo.txt");        char[] buf = new char[1024];        int len = 0;        while((len = fr.read(buf)) != -1)        {            fw.write(buf);            System.out.print("OK");        }     }     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){}     } }

}

利用字符流中的BufferedReader BufferedWriter copy文件。

import java.io.*;

/** * 通过文件缓冲流复制文件 * @author HM * */public class CopyTextByBuf {    public static void main(String[] args)    {        copy();    }    public static void copy()    {        BufferedReader bfr = null;        BufferedWriter bfw = null;        try        {            bfr = new BufferedReader(new FileReader("c:/TemplateDemo.java"));            bfw = new BufferedWriter(new FileWriter("c:/demo.txt"));            String line = null;            while((line = bfr.readLine())!= null)            {                bfw.write(line);                bfw.newLine();                bfw.flush();            }        }        catch (IOException e)        {            throw new RuntimeException("读写失败");        }        finally        {            try{                if(bfr != null)                    bfr.close();            }            catch(IOException e)            {                throw new RuntimeException("缓冲读取流关闭失败");            }            try{                if(bfw != null)                    bfw.close();            }            catch(IOException e)            {                throw new RuntimeException("缓冲写入流关闭失败");            }        }    }} 

装饰设计模式
当可以对一个体系中的多个子类进行通用功能增强时。可以将通用功能描述成为一个类,继承此体系的父类,通过多态接收各个子类型。实例化此类即可增强功能。

class Coder{    public static void sayHello()    {        System.out.println("meizi ,nihao @.@");    }}class SuperCoder{    private Coder m;    SuperMan(Coder m)    {        this.m = m;    }    public static void superSayHello()    {        m.sayHello();        System.out.println("gen wo xue zuo cai ba");    }}

LineNumberReader

import  java.io.*;class MyLineNumberReader{    private Reader in = null;    private int lineNumber;    MyLineNumberReader(Reader in)    {        this.in = in;    }    public void setLineNumber (int lineNumber)    {        this.lineNumber = lineNumber;    }    public int getLineNumber()    {        return lineNumber;    }    public String myReadLine()throws IOException    {        lineNumber++;        StringBuilder sb = new StringBuilder();        int ch = 0;        while((ch = in.read()) != -1)        {            if(ch == '\r')                continue;            if(ch == '\n')                return sb.toString();            else                sb.append((char) ch);        }        if(sb.length() != 0)            return sb.toString();        return null;    }    public void myClose() throws IOException    {        in.close();    }}

字节流

InputStream:是表示字节输入流的所有类的超类。

下层体系
- |— FileInputStream:从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用 FileReader。
- |— FilterInputStream:包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。
- |— BufferedInputStream:该类实现缓冲的输入流。

OutputStream:此抽象类是表示输出字节流的所有类的超类。

下层体系
- |— FileOutputStream:文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。
- |— FilterOutputStream:此类是过滤输出流的所有类的超类。
- |— BufferedOutputStream:该类实现缓冲的输出流。

0 0
原创粉丝点击