Java笔记(四)——输入输出
来源:互联网 发布:马克思主义哲学 知乎 编辑:程序博客网 时间:2024/05/21 15:05
1.注意,输入输出流以字节流为操作对象,InputStream是所有输入流基类,OutputStream是所有输出流基类,这两个基类不能被实例化;
2.InputStream的public int read()函数从输入流读入一个字节,存储在返回int对象的低八位里。OutputStream的public void write(byte[] b)把字节数组写入当前文件,public void write(int b)把b的低八位写入当前文件;
3.数据输入输出流DataInputStream、DataOutputStream的有点在于他们提供了readBoolean、readFloat等直接读取基本类型的成员方法,还有writeBoolean、writeFloat等直接输出基本类型的成员方法;
4.PrintStream是标准输出,System.out和System.err都是PrintStream的对象(),有点在于包含可以直接输出多种数据类型的成员方法,像print(char c)、print(float)、print(String)、print(Object)等,还有对应的println函数换行输出函数;
5.带缓冲的输入输出流BufferedInputStream、BufferedOutputStream,他们的对象会在内存中开辟一个字节数组,存放数据流中数据。这样可以把一个较大的数据块读入内存,也可以把一个大数据块一次性写入文件中,实现高效读写。
他们的构造函数如下:
public BufferedInputStream(InputStream in)public BufferedInputStream(InputStream in, int size)和public BufferedOutputStream(OutputStream out)public BufferedOutputStream(OutputStream out, int size)
其中in、out通常是文件输入输出流对象,用BufferedInputStream、BufferedOutputStream比普通文件输入输出流快;
6.随即访问文件类型RandomAccessFile:他不同于普通输入输出流之处在于,他可以不按顺序的读写,而且可以用同一个对象进行读写。
RandomAccessFile将文件看成字节数组,他用一个指针记录当前位置,可以用成员函数public seek(long pos) throws IOException将指针定位到pos制定位置,pos单位为字节,getFilePointer()可以获得指针当前位置,skipBytes(int n)把指针后移n个字节。
RandomAccessFile的read函数只读取一个字节,RandomAccessFile还提供readInt、readFloat等成员方法来读取基本类型,public final String readLine()读取一行
RandomAccessFile的write函数当参数为int时只将int对象的低8为写入文件,当参数为字节数组时把该数组写入文件,如果想直接写入基本数据类型可以用writeInt、writeFloat等函数;
7.Java中有一套和输入输出流对应的读写器:Reader、Writer、FileReader、FileWriter...,读写器与输入输出流区别在于,前者处理的是字符流,后者处理的时字节流,读写器一般会获得较好的中文支持;
8.ObjectInputStream、ObjectOutputStream用来输入输出可序列化对象(可序列化的类型必须继承自java.io.Serializable)。
ObjectOutputStream提供writeBoolean、writeFloat等成员方法输出基本类型,writeObject输出引用类型对象;
ObjectInputStream提供readBoolean、readFloat等成员方法读入基本类型,readObject读入引用类型对象,读出后需要做类型转换,如T t = (T)(of.readObject());
注意,如果不在序列化类中定义static final long serialVersionUID,系统会自动生成一个序列号,当做当前类的哈希码,只有序列号相等的对象才能有readObject读取。当类发生改变时系统会自动生成的序列号会改变,序列号不一致时会导致读取失败;
9.前面的输入输出类都是针对文件内容的,而java.io.File可以从整体上对文件进行处理,很少涉及文件内容操作。比如File对象可以用exists判断当前对象的路径或文件是否存在,isFile判断当前对象是否是文件,isDirectory判断当前对象是否是路径,getAbsolutePath获取当前对象的绝对路径,delete删除当前对象所表示的文件或路径,mkdir创建路径;
- Java笔记(四)——输入输出
- JAVA之输入输出(四)
- C语言笔记系列之四——输入输出控制
- Java学习笔记——输入输出
- Java笔记(五) 输入输出
- java IO-输入输出流(四)
- python学习笔记—输入输出
- 输入输出格式(四)
- 输入输出系统(四)
- J2SE学习笔记3 — Java基本语法(6)基本输入输出
- Java io 输入输出流(四)
- java输入输出笔记
- java输入输出学习笔记
- Java输入输出流笔记
- java IO流(四)--重定向标准输入输出
- JAVA基础知识——输入输出
- JAVA笔记(四)
- java笔记(四)
- ubuntu下家居装修设计软件-SWEET HOME
- 越狱批量包
- 回溯法经典—n-皇后问题
- 黑马程序员——day05_Response和Request
- POJ 1321 棋盘问题
- Java笔记(四)——输入输出
- 小结.Net下的状态管理
- 处理对象的多种状态及其相互转换——状态模式(一)
- 人生何求知己,淡谈我的人生囧途(初一)
- Android点亮屏幕或屏幕解锁和锁定
- 设计模式--桥接模式
- 使用编程方式获取当前Java进程的进程ID
- Sql server快速有条件删除海量数据 Truncate
- Android语音识别