流的那些事-Read-Writr

1 file是可以获取文件的属相,但是无法读取和写入文件,有一种东西可以读和写文件,那就是流。流是指一连串流动的字符,是以先进先出的方式发送和接受数据的通道。

2 按照流的方向可以分为输入流和输出流。

3 按照处理的方式划分为字节流和字符流

我们先来看一下字节流是如何读取的。

package file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileInputStreamTest {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        //创建对象并制定路径
        FileInputStream file=new FileInputStream("/Users/apple/Documents/tes.txt");
        FileOutputStream fos=new FileOutputStream("/Users/apple/Documents/tes.txt");
        String worlds="我的青春我做主";
        byte[]w=worlds.getBytes();
        fos.write(w);
        System.out.println("写入成功");
        byte[]b=new byte[1024];//设立缓存区
        int date;
        while((date=file.read())!=-1){
             file.read(b);
             String str=new String(b,0,date);//接受读取的字节
            System.out.println(str);
        }
        file.close();//关流
        fos.close();//关流å

    }

}

通过上面的代码大家应该清楚了,字节流的读和写,但是还需要注意一点,在向文件写数据的时候讲覆盖文件中原有的内容。

字符流的读和写

package reader;

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

public class ReaderTest {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        // 创建读的对象
        Reader r = new FileReader("/Users/apple/Documents/tes.txt");
        BufferedReader br = new BufferedReader(r);
        // 创建写的对象
        Writer f = new FileWriter("/Users/apple/Documents/tes.txt");
        BufferedWriter bw = new BufferedWriter(f);
        bw.write("你好");// 写入内容
        bw.write("明天");
        bw.flush();
        bw.close();
        f.close();
        // 读取一行
        String lin = br.readLine();
        // 循环读取
        while (lin != null) {
            System.out.println(lin);
            lin = br.readLine();
        }

    }

}

需要提醒的一点是,BufferedReader,BufferedWriter, 都自带缓存区。别忘了刷新缓存

原文地址:https://www.cnblogs.com/liuxingzhi/p/6845801.html