zoukankan      html  css  js  c++  java
  • 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中的数据打印到了控制台!

  • 相关阅读:
    iOS6和iOS7代码的适配(5)——popOver
    es5创建对象与继承
    js学习日记-new Object和Object.create到底干了啥
    js滚动及可视区域的相关的操作
    css匹配规则及性能
    normalize.css源码分析
    css的水平居中和垂直居中总结
    js快速排序算法
    数据结构flash演示
    二叉树遍历
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11136209.html
Copyright © 2011-2022 走看看