最近学习了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. Using MySQL Connector .NET 6.6.4 with Entity Framework 5

    I had been waiting for the latest MySQL connector for .NET to come out so I can move on to the new a ...

  2. 【DP】HIHO 1078

    HIHO #1037 : 数字三角形 题意:中文题就不说了. 思路:提示也很清楚,就这里贴一下代码.注意边界情况. dp[i][j] = max(dp[i-1][j],dp[i-1][j-1])+ma ...

  3. 【Spring RCP】 RULES规则

    Rich Client 约束规则 1.Constraint 定义了一个约束接口,接口中只有1个方法 public boolean test(Object argument); //这个方法指对约束的检 ...

  4. marquee-:模拟弹幕

              marquee:基本已被弃用!!1 可以模拟弹幕效果           1.方向:direction             up  right   left  down     ...

  5. C#中的简单工厂和单例

    下面首先来说说简单工厂 举个例子: 首先是父类 public abstract class Pizza { public abstract string Info(); } } 子类 public c ...

  6. java 启动 shell脚本

    run.sh p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC"; color: #000000 ...

  7. vpn

    https://itunes.apple.com/us/app/sonicwall-mobile-connect/id822514576?mt=12

  8. Mock之easymock, powermock, and mockito

    easymock, powermock, and mockito Easymock Class Mocking Limitations To be coherent with interface mo ...

  9. 【php】命名空间 和 自动加载的关系

    目的 本文的目的主要是说明 命名空间的 use 关键词 和 new ClassName 这两个步骤,哪个步骤才会执行自动加载,这是逻辑有点混乱的表现,这种想法也是很正常的,让我们来解密吧 命名空间(n ...

  10. 关于 Pragma 的使用总结

    注意:此文乃是本人阅读多个博客文章后,记下的个人认为重点的地方. 参考文章: 参考1   参考2 #Pragma mark - 用于分离类中的不同功能的方法.(例如,一个 viewController ...