Java 读写文件的三种流介绍

FileOutputStream和FileInputStream

第一种是FileOutputStream和FileInputStream,一些平台一次只允许一个 FileOutputStream(或其他文件写入对象)打开文件进行写入。在这种情况下,则此类中的构造方法将失败。FileOutputStream是适用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用 FileWriter。下面例子来源网络摘录:

[java] view plaincopyprint?import java.util.*;  
import java.io.*;  
  
public class fileoutputstreamtest   
{  
    public static void main(String[] args) throws IOException   
    {  
        File file1 = new File("FileIn&OutputStreamTest.txt");  
        FileOutputStream output = new FileOutputStream("FileIn&OutputStreamTest.txt");   
        output.write(1);  
        output.flush();  
        output.close();  
        FileInputStream input = new FileInputStream("FileIn&OutputStreamTest.txt");  
        int a = input.read();  
        System.out.println(a);  
        input.close();  
    }  
}  

import java.util.*;
import java.io.*;

public class fileoutputstreamtest 
{
    public static void main(String[] args) throws IOException 
    {
     File file1 = new File("FileIn&OutputStreamTest.txt");
     FileOutputStream output = new FileOutputStream("FileIn&OutputStreamTest.txt"); 
     output.write(1);
     output.flush();
     output.close();
     FileInputStream input = new FileInputStream("FileIn&OutputStreamTest.txt");
     int a = input.read();
     System.out.println(a);
     input.close();
    }
}

FileWriter和FileReader

第二种即FileWriter和FileReader,是字符流,因为没有缓冲器所以是一个比较慢的读写文件类,下面代码来源于网络

[java] view plaincopyprint?import java.util.*;  
import java.io.*;  
  
public class FileReader_Writer   
{  
    public static void main(String[] args) throws IOException  
    {  
        File file2 = new File("FileRead&Write.txt");  
        FileWriter fw = new FileWriter("FileRead&Write.txt");  
        char str1[] = "Test the FileReader & FileWriter".toCharArray();  
        fw.write(str1);  
        fw.flush();  
        fw.close();  
        FileReader fr = new FileReader("FileRead&Write.txt");  
        int n = 0;  
        while((n = fr.read(str1,0,2))!=-1)  
        {  
            String str2 = new String(str1,0,n);  
            System.out.print(str2);  
        }  
    } 
因为FileReader和FileWriter是字符流,在没有缓冲器的情况下要使用字符串的形式进行读写,会有乱码错误出现。其实FileReader和BufferedReader可以一起使用,它们一起出现的话读文件的速度会很快,至少比没有缓冲的FileReader快很多。下面代码来源于网络:
import java.io.*;  
  
public class FileReader_Writer   
{  
    public static void main(String[] args) throws IOException  
    {  
        File file2 = new File("FileRead&Write.txt");  
        FileWriter fw = new FileWriter("FileRead&Write.txt");  
        String str1 = "Test the FileReader & FileWriter";  
        fw.write(str1);  
        fw.flush();  
        fw.close();  
        FileReader fr = new FileReader("FileRead&Write.txt");  
        BufferedReader br = new BufferedReader(fr);  
        String str2 = br.readLine();  
        System.out.println(str2);  
    }  
}

BufferedReader和BufferedWriter

第三种读写方式即BufferedReader和BufferedWriter,BufferedReader会一次性从物理流中读取8k(默认数值,可以自己进行设置和更改)字节内容到内存,如果外界有请求,就会到这里存取,如果内存里没有才到物理流里再去读。因为对物理流的每次读取,都会伴有IO操作而且IO操作是最耗费时间的。,BufferedReader就是减少了大量IO操作,而为你节省了时间。所以大家尽管用这种文件读写方法吧!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值