Java 读写文件的三种流介绍

来源:互联网 发布:打死不看右下角软件 编辑:程序博客网 时间:2024/05/22 08:20

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 0
原创粉丝点击