java 操作流的步骤

File类本身是与文件操作有关,但是如果要想操作内容则必须使用字节流或字符流完成,但是不管是使用何种的输入输出流,其基本的操作原理是一样的(以文件流为准):

一、使用File类找到一个文件对象,得到IO操作的源或目标

二、通过字节流或字符流的子类创建对象,(得到IO操作的通道)

三、进行读或写的操作,(IO操作)

四、关闭输入/输出,(打完收工,注意节约资源,关掉)

由于流的操作属于资源操作,所以在操作的最后一定要关闭以释放资源。

 

其实上面的流操作步骤可以联系生活中的例子:比如想把水井里的水弄到家里的大水缸去,怎么搞呢?

1.找到水井在哪里;2.找根管子一头接在水井里,一头接在家里的大水缸里;3.打开管子上的龙头,放水;4.水放满了,关掉水龙头.

 

计算机访问外部设备,要比直接访问内存慢得多,若我们每一次write方法调用都是直接写到外部设备(比如磁盘上的一个文件),CPU就要花费更多的时间去等待外部设备;我们可以开辟一个内存缓冲区,程序每一次的write方法都是写到这个内存缓冲区中,只有这个缓冲区装满了之后,系统才将这个缓冲区的内容一次集中写到外部设备.

 

我的总结:

好处:1.有效提高了CPU的使用率;2.write方法并没有马上真正写入到外部设备,我们还有机会回滚部分写入的数据;

Eg:

package july7file;

//构建输入流,读进来,输出到控制台!

import java.io.FileInputStream;

import java.io.InputStream;

public class Demo4 {

    public static void main(String[] args) throws Exception {

        //第一步:创建源!

        String filename = "6.4";//这个文件是在工作空间里面,没有后缀名!

       

        //第二步:创建管道!

        InputStream ips = new FileInputStream(filename);

       

        //第三步:操作!

       

        byte []buff = new byte[1024];

        int len;//定义缓冲区

        while((len = ips.read(buff)) != -1){

            System.out.println(new String(buff,0,buff.length));//输出到控制台!此时的输出流就是打印流!

            System.out.println("==========================================");//打印下,看哪里在1024。1024的地方被隔开了

        }

       

        //第四步:关闭资源(字符流必须关闭资源,因为它中间有缓冲区!对于字节流可以不用关闭,但是还是建议写上,习惯!)

        ips.close();

    }

}

输出:就将文件6.4中的数据打印到了控制台!

原文地址:https://www.cnblogs.com/fanweisheng/p/11136209.html