Java数据流
Java数据流分为两种:字节流(Byte)和字符流(Character)
标准流
- 字节流:以8位为为单位对二进制数据进行操作对数据不进行转换。这些类都是InputStream和OutputStream的子类.
FileInputStream(File file),FileOutputStream(File file)
BufferInputStream(FileInputStream inputStream),BufferOutputStream(FileOutputStream outputStream) - 字符流:以字符为单位对数据进行操作,在读的时候,将二进制数据转换为字符,在写时,将字符转换为二进制数据。这些类都是Reader和Writer的子类。
FileReader(File file),FileWriter(File file)
BufferedReader(FileReader fr),BufferedWriter(FileWriter fw)
缓冲流:高级数据流
直接继承字节流或字符流,得到的流称为标准流,在读取或者写入说句时,需要指定读取或写入的大小,然而在使用过程中,我们可能并不知道需要读取多少数据,因此有了缓冲流:
缓冲流对基本的流进行封装,然后在读取数据到缓存中,在对缓存数据进行操作,这里我们可以按行读取数据。缓冲流增强了对文件的读写能力。
包装过程如下:
File f = new File("fileName"):
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
数据流:数据流也是高级流
可以对Socket的数据流进行操作
DataInputStream,DataOutputStream
DataInputStream data = new DataInputStream(FileInputStream fs);
数据流读取或写入时,可以根据数据类型进行,如:
data.readByte();
data.readUTF();
随机流
随机流不是输入输出流,他可以对一个文件进行读写操作。
RandomAccessFile rf = new RandomAccessFIle("filename","rw");//对文件进行读写
rf.seek(int total);//定位读取位置
总结:
我们可以将说句流分为三层:
第一层:File,或者String fileName
第二层:通过标准流包装第一层:FileReader,FileWriter
第三层:高级流封装第二层的标准流:BufferedFileReader,BufferWriter,DataInputStream等
第三层的高级流,在读写时更方便