java读写文件的几种方式

java中是通过文件流来进行读写文件的,由于java面向对象的特性,在java中有专门的对象来进行文件的读写操作,下面通过代码一一为大家展示。

通过FileReader和FileWriter进行文件的读写(以字符方式读写)

常用于读写文本文件的最方便的读写方式

import java.io.*;

public class Fileiotest {
    public static void main(String[] args) throws IOException {
        //创建一个File对象
        File file = new File("aa.txt");
        //如果该文件不存在则创建
        if (!file.exists())
        {
            file.createNewFile();
        }
        //通过FileWriter对文件进行写操作,第二个参数为true进行追加写,默认为false
        FileWriter fw = new FileWriter("aa.txt",false);
        //写文件
        fw.write("你好啊");
        //释放资源
        fw.close();
        //通过FileReader对文件进行读操作
        FileReader fr = new FileReader("aa.txt");
        //创建一个char类型的数组接收读取到的内容
        char[] chars = new char[1024];
        //用于接收在文件中读到的有效内容的长度
        int len;
        //循环读取文件,当读到文件末尾时len=-1
        while ((len=fr.read(chars))!=-1)
        {
            //从char数组头部开始将len个字符转为String对象
            System.out.println(new String(chars,0,len));
        }
        //释放资源
        fr.close();
    }
}

通过FileInputStream和FileOutputStream进行文件的读写(以字节方式读写)

应用范围最为广泛的读写,可用来读写图片文件

import java.io.*;

public class Fileiotest {
    public static void main(String[] args) throws IOException {
        //创建一个File对象
        File file = new File("aa.txt");
        //如果该文件不存在则创建
        if (!file.exists())
        {
            file.createNewFile();
        }
        //通过 FileOutputStream对文件进行写操作,第二个参数为true进行追加写,默认为false
        FileOutputStream fw = new FileOutputStream("aa.txt");
        //写文件
        fw.write("你好啊".getBytes());
        //释放资源
        fw.close();
        //通过FileInputStream对文件进行读操作
        FileInputStream fr = new FileInputStream("aa.txt");
        //创建一个byte类型的数组接收读取到的内容
        byte[] bytes = new byte[1024];
        //用于接收在文件中读到的有效内容的长度
        int len;
        //循环读取文件,当读到文件末尾时len=-1
        while ((len=fr.read(bytes))!=-1)
        {
            //从bytes数组头部开始将len个字符转为String对象
            System.out.println(new String(bytes,0,len));
        }
        //释放资源
        fr.close();
    }
}

通过BufferedInputStream和BufferedOutputStream加快文件读写的速度

利用缓冲流加快字节流读写,同理有BufferedReader和BufferedWriter来加快字符流读写的速度。

import java.io.*;

public class Fileiotest {
    public static void main(String[] args) throws IOException {
        //创建一个File对象
        File file = new File("aa.txt");
        //如果该文件不存在则创建
        if (!file.exists())
        {
            file.createNewFile();
        }
        //通过BufferedOutputStream加快写文件的速度
        BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream("aa.txt"));
        //写文件
        bw.write("你好啊".getBytes());
        //释放资源
        bw.close();
        //通过BufferedInputStream加快读取文件的速度
        BufferedInputStream br = new BufferedInputStream(new FileInputStream("aa.txt"));
        //创建一个byte类型的数组接收读取到的内容
        byte[] bytes = new byte[1024];
        //用于接收在文件中读到的有效内容的长度
        int len;
        //循环读取文件,当读到文件末尾时len=-1
        while ((len=br.read(bytes))!=-1)
        {
            //从bytes数组头部开始将len个字符转为String对象
            System.out.println(new String(bytes,0,len));
        }
        //释放资源
        br.close();
    }
}

通过InputStreamReader和OutputStreamWriter读写文件

可以以指定的编码方式进行读写,以字符流读写。

import java.io.*;

public class Fileiotest {
    public static void main(String[] args) throws IOException {
        //创建一个File对象
        File file = new File("aa.txt");
        //如果该文件不存在则创建
        if (!file.exists())
        {
            file.createNewFile();
        }
        //通过OutputStreamWriter指定编码方式写文件
        OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("aa.txt"), "gbk");
        //写文件
        ow.write("你好啊");
        //释放资源
        ow.close();
        //通过InputStreamReader指定编码读文件
        InputStreamReader ir = new InputStreamReader(new FileInputStream("aa.txt"),"gbk");
        //创建一个char类型的数组接收读取到的内容
        char[] chars = new char[1024];
        //用于接收在文件中读到的有效内容的长度
        int len;
        //循环读取文件,当读到文件末尾时len=-1
        while ((len=ir.read(chars))!=-1)
        {
            //从chars数组头部开始将len个字符转为String对象
            System.out.println(new String(chars,0,len));
        }
        //释放资源
        ir.close();
    }
}

打印流

如果只是单纯的写文件可以通过打印流重定向进行写文件,写完后再将打印流定向到控制台。

import java.io.*;

public class Fileiotest {
    public static void main(String[] args) throws IOException {
        System.out.println("控制台打印");
        //保存控制台打印流
        PrintStream pr = System.out;
        //将输出重定向到文件中,如果该文件不存在则会自动创建
        System.setOut(new PrintStream("aaa.txt"));
        System.out.println("输出重定向到文件");
        //重新回到控制台输出的两种方式
        //System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
        System.setOut(pr);
        System.out.println("又重定向到控制台");
    }
}

java的各种读写文件的方式已经给大家介绍完毕了,java中还有各种各样的流对象,这里就不详细介绍了,今天的分享就到这里了,欢迎关注,一起进步~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值