最近学习了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. DOTA 2 API(个人资料)

    获取个人资料 http://wiki.teamfortress.com/wiki/WebAPI/GetPlayerSummaries 获取个人库存 http://wiki.teamfortress.c ...

  3. SqlServer禁用启用触发器、外键约束

    --禁用指定名称触发器 ALTER TABLE tbname DISABLE TRIGGER trigname --恢复指定名称触发器 ALTER TABLE tbname ENABLE TRIGGE ...

  4. ORA-12519: TNS:no appropriate service handler found 解决(转)

    可能是数据库上当前的连接数目已经超过了它能够处理的最大值. select count(*) from v$process --当前的连接数 select value from v$parameter  ...

  5. 20145205 《Java程序设计》实验报告三:敏捷开发与XP实践

    开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领域:软 ...

  6. MySQL时间戳相互转换

    mysql将时间戳转成常用时间格式 在mysql中,一个时间字段的存储类型是int(11),怎么转化成字符类型,比方存储为13270655222,需要转化为yyyy -mm-dd的形式. 使用 FRO ...

  7. C#的7个原则

    C#的七个原则如下: 1.单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责. 2.开闭原则(Open-Closed Pri ...

  8. Android课程---关于数据存储的学习(2)

    手机外部存储的学习 activity_data2.xml <?xml version="1.0" encoding="utf-8"?> <Li ...

  9. C++ 画星号图形——空心梯形(核心代码记录)

    b=a; ;c<=a;c++) { ;d<=a-c;d++) printf(" "); ;e<=b;e++) ||c==a) printf("*&quo ...

  10. soui中subscribeEvent订阅控件消息与宏订阅注意事项

    同一个控件,subscribeEvent与宏定义不能同时响应,优先响应sub 所以,同一个控件的同一个消息,要想在多个地方响应,就必须sub方式订阅