Java文件IO

文件IO,指的就是程序对文件的各种操作(通常指读(Input)写(Output)),该知识点非常简单,至少比C/C++里面的实现简单了不少(指使用)。
一般的我们只需要了解和学习几个简单文件类的使用方法即可,即File类、字节流读写、字符流读写。

字节流读写

InputStream
    简介:
        这是一个抽象类,其父类为Object,属于lang包,实现了Closeable类,一般用于多态,是所有字节输入流的超类
    常用方法:
        close();     //关闭输入流并释放资源,用完之后必须进行释放
        read();      //读取输入流中的下一个字节  
        read(byte[] b);    //read()的重载,从输入流读取一定字节,存入缓冲数组b中
        read(byte[] b,int off,int len);    //read()的重载,表示读取最多len个字节到b数组

 

    使用方法:
        一般使用多态的方法调用,作为子类。
        例如:
            InputStream in = new FileInputStream("Path");
            in.read();        //从path中读取字符
            in.close();

FileInputStream

     简介:
        父类为InputStream,一般用于从文件中读取字节,如果需要读取字符,可以考虑使用FileReader
     常用方法:
        close();     //关闭输入流并释放资源,用完之后必须进行释放
        read();      //读取输入流中的下一个字节  
        read(byte[] b);    //read()的重载,从输入流读取一定字节,存入缓冲数组b中
        read(byte[] b,int off,int len);    //read()的重载,表示读取最多len个字节到b数组

    使用方法:

        这是一个abstract类,不能将其实例化,因此一般使用多态的方法,将其作为父类
        例如:
            InputStream in = new FileInputStream("Path");
            in.read();        //从path中读取字符
            in.close();

BufferedInputStream

    简介:
        这BufferedFileInputStream类是一个添加了缓存数组的高速读入类,在其类中存在一个buf数组
     常用方法:
        close();     //关闭输入流并释放资源,用完之后必须进行释放
        read();      //读取输入流中的下一个字节  
        read(byte[] b,int off,int len);    //read()的重载,表示读取最多len个字节到b数组

 

    使用方法:
        BufferedInputStream bi = new BufferedInputStream(new FileInputStream(new File("C://help.txt")));
        System.out.println(bi.read());    
        bi.close();      //关闭输入流并释放资源,用完之后必须进行释放

 


OutputStream
    简介:
        这是一个抽象类,其父类为Object,属于lang包,实现了Closeable、Flushable类,一般用于多态,是所有字节输入流的超类
     常用方法:
        close();            //关闭输出流并释放资源,用完之后必须进行释放
        write(byte[] b);    //关闭输入流并释放资源,用完之后必须进行释放
        write(int b);        //关闭输入流并释放资源,用完之后必须进行释放
        write(byte[] b,int off,int len);    //关闭输入流并释放资源,用完之后必须进行释放
        flush();        //关闭输入流并释放资源,用完之后必须进行释放

    使用方法:

        这是一个abstract类,不能将其实例化,因此一般使用多态的方法,将其作为父类
        例如:
        File file = new File(C://help.txt");
        OutputStream out = new FileOutputStream(file);
        out.write(65);
        out.close();
        InputStream in = new FileInputStream(file);
        System.out.println(in.read());
        in.close();

FileOutputStream

    简介:
        父类为OutputStream,一般用于向文件中写入字节,如果需要写入字符,可以考虑使用FileWrite
     常用方法:
        close();            //关闭输出流并释放资源,用完之后必须进行释放
        write(byte[] b);    //关闭输入流并释放资源,用完之后必须进行释放
        write(int b);        //关闭输入流并释放资源,用完之后必须进行释放
        write(byte[] b,int off,int len);    //关闭输入流并释放资源,用完之后必须进行释放
        flush();        //关闭输入流并释放资源,用完之后必须进行释放

    使用方法:

        这是一个abstract类,不能将其实例化,因此一般使用多态的方法,将其作为父类
        例如:
        File file = new File("C://help.txt");
        OutputStream out = new FileOutputStream(file);
        out.write(65);
        out.close();
        InputStream in = new FileInputStream(file);
        System.out.println(in.read());
        in.close();

 

BufferedOutputStream
    简介:
        这是一个抽象类,其父类为Object,属于lang包,实现了Closeable类,一般用于多态,是所有字节输入流的超类
     常用方法:
        close();            //关闭输出流并释放资源,用完之后必须进行释放
        write(byte[] b);    //写入
        write(int b);        //关闭输入流并释放资源,用完之后必须进行释放
        write(byte[] b,int off,int len);    //关闭输入流并释放资源,用完之后必须进行释放
        flush();        //关闭输入流并释放资源,用完之后必须进行释放

    使用方法:

        BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream("C://help.txt"));
        bo.write(12);
        bo.close();
        BufferedInputStream bi = new BufferedInputStream(new FileInputStream("C://help.txt"));
        System.out.println(bi.read());
        bi.close();

 


字符流读写

Reader
    简介:
        这是一个抽象类,其父类为Object,属于lang包,实现了Closeable、Readable类,一般用于多态
     常用方法:
        close();     //关闭流并释放资源,用完之后必须进行释放
        read();      //读取一个字节  
        read(byte[] b);    //read()的重载,将字符读入数组

 

    使用方法:
        Reader reader = new FileReader("C://help.txt");
        System.out.println(reader.read());

 

FileReader
    简介:
        简单的字符读入实现,没有特有方法,因此一般用多态的方式创建,常用于BufferedReader的参数
     常用方法:
        close();     //关闭流并释放资源,用完之后必须进行释放
        read();      //读取一个字节  
        read(byte[] b);    //read()的重载,将字符读入数组

 

    使用方法:
        Reader reader = new FileReader("C://help.txt");
        Writer writer = new FileWriter("C://help.txt");
        writer.write("hehe");
        writer.close();
        System.out.println(reader.read());
        reader.close();

 

BufferedReader
    简介:
        通过缓存读取字符,内部有一个缓存数组
     常用方法:
        close();     //关闭流并释放资源,用完之后必须进行释放
        read();      //读取一个字节  
        read(byte[] b);    //read()的重载,将字符读入数组

 

    使用方法:
package app;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

/**
 * Test2
 */
public class Test2 {
    public static void main(String[] args) {
        Reader r = null; // 创建Reader对象
        Writer w = null;
        try {
            r = new BufferedReader(new FileReader("C://help.txt")); // new一个BF类
            w = new BufferedWriter(new FileWriter("C://help.txt")); // new一个BW类
            w.write("123"); // 写入文件
            w.close();
            System.out.println(r.read()); // 打印
        } catch (Exception e) {

        } finally { // 确保r必定被回收
            try {
                r.close(); // 关闭资源

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

 


Writer
    简介:
        是一个抽象类,字符流读取的父类,只能用于读取字符,否则会出现乱码
     常用方法:
        close();            //关闭输出流并释放资源,用完之后必须进行释放
        write(byte[] b);    //写入
        flush();            //刷新资源,默认在执行close后会自动刷新

 

    使用方法:
        Reader reader = new FileReader("C://help.txt");
        Writer writer = new FileWriter("C://help.txt");
        writer.write("hehe");
        writer.close();
        System.out.println(reader.read());
        reader.close();

FileWriter

    简介:
        用来写入字符文件的便捷类
     常用方法:
        close();            //关闭输出流并释放资源,用完之后必须进行释放
        write(byte[] b);    //写入
        flush();            //刷新资源,默认在执行close后会自动刷新

    使用方法:

        Reader reader = new FileReader("C://help.txt");
        Writer writer = new FileWriter("C://help.txt");
        writer.write("hehe");
        writer.close();
        System.out.println(reader.read());
        reader.close();

BufferedWriter

    简介:
        通过缓存写入字符,内部有一个缓存数组
     常用方法:
        close();            //关闭输出流并释放资源,用完之后必须进行释放
        write(byte[] b);    //写入
        flush();            //刷新资源,默认在执行close后会自动刷新

    使用方法:

package app;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

/**
 * Test2
 */
public class Test2 {
    public static void main(String[] args) {
        Reader r = null; // 创建Reader对象
        Writer w = null;
        try {
            r = new BufferedReader(new FileReader("C://help.txt")); // new一个BF类
            w = new BufferedWriter(new FileWriter("C://help.txt")); // new一个BW类
            w.write("123"); // 写入文件
            w.close();
            System.out.println(r.read()); // 打印
        } catch (Exception e) {

        } finally { // 确保r必定被回收
            try {
                r.close(); // 关闭资源

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

字符流转字节流


    InputStreamReader
    简介:
        将读入的字节作为字符解释,定义方式为:BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
     常用方法:
        close();     //关闭流并释放资源,用完之后必须进行释放
        read();      //读取一个字节  

 

    使用方法:
    public static void main(String[] args) {
        BufferedReader in = null;
        BufferedWriter out = null;
        try {

            in = new BufferedReader(new InputStreamReader(new FileInputStream("C://help.txt")));
            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C://help.txt")));
            // BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            out.write("早上好");
            try {
                out.close();
            } catch (Exception e) {
                // TODO: handle exception
            }
            System.out.println(in.read());
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

 

    OutputStreamWriter
    简介:
        将读入的字节作为字符解释,定义方式为:BufferedWriter in = new BufferedWriter(new InputStreamWriter(System.in));   
    常用方法:
        close();            //关闭输出流并释放资源,用完之后必须进行释放
        write(byte[] b);    //写入
        flush();            //刷新资源,默认在执行close后会自动刷新

    使用方法:

    public static void main(String[] args) {
        BufferedReader in = null;
        BufferedWriter out = null;
        try {

            in = new BufferedReader(new InputStreamReader(new FileInputStream("C://help.txt")));
            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C://help.txt")));
            // BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            out.write("早上好");
            try {
                out.close();
            } catch (Exception e) {
                // TODO: handle exception
            }
            System.out.println(in.read());
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值