Java总结——文件&流
2016-09-10 19:39
337 查看
最近学习了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可以单独使用,只是读写数据比较固定,不如自己组装的流灵活。
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可以单独使用,只是读写数据比较固定,不如自己组装的流灵活。
相关文章推荐
- atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
- JAVA IO分析三:IO总结&文件分割与合并实例
- atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
- JAVA操作properties配置文件——总结(Locale&ResourceBundle& PropertyResourceBundle)
- Java中关于文件的绝对路径与相对路径的总结(转)
- [个人总结]Java生成PDF文件
- java关于(io&nio) 的 文件copy例子
- java关于(io&nio) 的 文件copy例子
- 关于java文件路径问题总结
- php 文件上传 错误信息 总结 $_FILES['Filedata']["error"] 值枚举
- JAVA操作文件总结
- java Dates &Times完全总结
- 不同平台下Java文件路径问题总结
- Java 上传文件总结
- 使用Axis插件来从WSDL文件生成代码时"An error occurred while completing process -java.lang.reflect.InvocationTargetException"的错误
- Flex+Java组合解决汉字或特殊符号(如&等)文件下载时的文件名乱码问题
- 自己总结的Java实现文件的读写操作
- 相对路径获取JAVA配置文件Class.getResourceAsStream() & ClassLoader的getResourceAsStream()
- java读取文件的方法总结
- java写excel文件,报Warning: MS Office Drawing on sheet "Sample" not supported - omitting