最近学习了Java的输入输出,脑子里有两点乱,不过比之前的思路好像清晰了很多。脑子刚刚接收这些信息的时候,整个就是懵逼的,又是文件又是流的,文件到底干嘛的,流到底干嘛的?恩,后来,想了想,其实也不难理解嘛。Java里的输入输出其实就像脑袋接收信息。文件就像大脑,是存储接收到的信息的地方;流就是类似声波的东西,耳朵接收到,但是却未必要用大脑(你说的很对,可我就是不听。)

1. File是什么,RandomAccessFile是什么,又是何时使用呢?

  1)   首先要说明一下File类的作用,File类是IO包中唯一用于表示磁盘文件信息的对象。File类的作用是用于创建文件、删除文件、重命名文件、以及判读文件是否有读取权              限,以及是否存在。File包括目录。

  2)   RandomAccessFile:用于读写文件数据,其基于指针对文件进行读写。常用于文件数据的复制等操作。其中文件的复制,可以通过提高每次读取的数据量来减少读取数             据的次数从而达到提高数据读取的效率。

2. 流到底指的是什么,有哪些,分别作用是什么呢?

  1)   流的分类。

      a)   从流的方向分为:输入流和输出流。输入是指数据流入程序,输出是指数据从程序流出。

      b)   从流的分工分为:节点流和处理流。

      c)    从流的内容分为:面向字节流和面向字符流。

  2)   几种常用的流:

    a)   文件流:FileInputStream、FileOutputStream,低级流(节点流),分别用于从指定文件读取、写出字节。

    b)   缓冲流:BufferedInputStream、BufferdOutputStream,高级流,能够提高读取效率。

    c)   对象流:ObjectInputStream、ObjectOutputStream,高级流,分别用于对象的反序列化和对象序列化。

        分别对应方法:readObject() 与writeObject(Object o)方法。

        注意:若希望该对象可以被写出,那么前提是该对象所属的类 必须实现Serializable接口。

    d)  转换流:InputStreamReader、OutputStreamWriter。ISR与OSW相当于是 联系字节流与字符流的纽带,类似与转换器的效果。

    e)  缓冲字符流:BufferedReader、PrintWriter(内部使用BufferedWriter实现)。

  注意:字符流虽然是以字符为单位,但是底层实际上还是要以字节形式读写,所以字符流天生就具备将字节转换为字符或字符转换为字节的能力。所以所有的字符流都是高             级流。方便我们读写字符数据。无需再关心字符与字节的相互转换了。

低级流经过在外层层组装处理流,形成了功能更加完善效率更高的流。比如文件流在外包装缓冲流之后就可以使得读写效率提高;文件流在外包装一层对象流就可以对         对象进行读写文件的操作。

    处理流一般需要加到节点流上才能发挥作用,但是有的流比如PrintWriter可以单独使用,只是读写数据比较固定,不如自己组装的流灵活。

Java总结——文件&流的更多相关文章

  1. [Java] 通过文件流拷贝文件

    package test.stream; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  2. java的文件流:字节流(FileInputStream、FileOutputStream)和字符流(FileReader、FileWriter)。

    java的输入输出建立在4个抽象类的基础上:InputStream.OutputStream.Reader.Writer.InputSream和OutputStream被设计成字节流类,而Reader ...

  3. java获取文件流

      CreateTime--2017年9月1日14:49:21 Author:Marydon servlet获取文件流的两种方式 方式一:使用绝对路径(推荐使用) import java.io.Inp ...

  4. java 读取文件流

    搬运自速学堂:https://www.sxt.cn/Java_jQuery_in_action/ten-iqtechnology.html JAVA中IO流体系: 四大IO抽象类 ·InputStre ...

  5. java根据文件流判断文件类型(后缀名)

    import java.io.FileInputStream; public class FileType{ public static String bytesToHexString(byte[] ...

  6. java操作文件流对象

    所有流对象 InputStream 字节流         FileInputStream 字节流 专门读写非文本文件的         BufferedInputStream 高效流 OutPutS ...

  7. java读取文件流和写入

    package jsoup;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStre ...

  8. java Excel文件流输出(后台)没有下载提示

    /**方案: *1. *问题源头应该是前端用的是ajax方式请求路径,要想出现下载Excel的弹窗,我个人理解应该是等同于重新打开一个窗口,而ajax默认不动页面直接将值返回,所以没有提升下载. *解 ...

  9. RABBITMQ/JAVA 客户端测试(再补:利用文件流)

    (一)这里可以先复习一下java输入输出流和文件操作--- 1.File类保存文件或目录的各种元数据信息,包括文件名.文件长度.最后修改时间.是否可读.获取当前文件的路径名.判断指定文件是否存在.获取 ...

随机推荐

  1. java.math.RoundingMode 几个参数详解

    java.math.RoundingMode里面有几个参数搞得我有点晕,现以个人理解对其一一进行总结: 为了能更好理解,我们可以画一个XY轴 RoundingMode.CEILING:取右边最近的整数 ...

  2. php经典算法(转载)

    //--------------------  // 基本数据结构算法 //--------------------  //二分查找(数组里查找某个元素)  function bin_sch($arr ...

  3. *HDU1455 DFS剪枝

    Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  4. 四种常见的 POST-------- content-type数据提交方式

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...

  5. iOS PCH文件

    在Xcode6之前,创建一个新的工程,Xcode会再Support Files文件夹下自动创建一个"工程名 - prefix.pch"文件,也是一个头文件,pch文件的内容能被项目 ...

  6. JQuery全选Prop(“check”,true)和attr("attr",true)区别

    $scope.selectAll = false; //点击单选框的时候是不是全选 $scope.checkIsAll = function(){ var wipeCheckBoxObj = $(&q ...

  7. SQL常用字段类型

    中文常用字段类型 1.   名称类    nvarchar(10) 2.   数量       int 3.   时间      date 4.   货币      money 5.   编号     ...

  8. eclipse护眼颜色和字体大小设置

    ♣eclipse护眼颜色和关键字颜色设置 ♣eclipse字体大小设置(包括jsp , .xml ,.java) 1.Eclipse字体大小调整: 窗口(Window)-首选项(Preferences ...

  9. jvisualVM 分析heapdump

    代码很简单,eclipse里面设置下最大堆空间为128m,: @Test public void testOutOfMemory() { List<NewsAddDto> document ...

  10. 一起来做chrome扩展《本地存储localStorage》

    chrome中的本地存储其实也是用的HTML5中localStorage,唯一区别是chrome扩展有自己的localStorage,它属于这个扩展,而不属于一个域名.得用这一点可以很好的处理扩展自己 ...