标签:转换 通过 leo 文本 显示 ali 在服务器 int foo
一.描述如下流的基本作用:
文件字节流、文件字符流、缓冲字节流、缓冲字符流字节数组流、数据流、转换流、对象流
1.文件字节流:
FileInPutStream
FileOutPutStream
是一种节点流,直接面向数据,中间没有其他流介入数据。文件之间的数据通过字节的方式操作。
基本的字节流,对于字节的操作是底层操作,是文件之间数据的直接操作。
FileInPutStream用到的方法是:read()
用于读取某个文件,在使用的时候格式为
FileInPutStream fis = new FileInputStream(“D://test.txt”);
fis.read();
fis.read(byte[],0,length);
这样我们就读取到了文件数据,但是fis.read()是一个字节,并不是我们人类识别的字符
FileOutPutStream fos = new FileOutPutStream("D://test.txt");
fos.write();
或者
fos.write(byte[], 0 ,length);
一般在使用的时候是这样的:
首先创建一个数组用来接收fis.read()读取的数据
byte[] buf = new byte[1024];//任意数字
fis.read(buf);//返回一个int类型的数字,用来记录每次读取了多大的数据
int i = fis.read(buf);//这样我们就完成了一次1024大小的数据获取 , i = 1024 是我们读取到的数据;
如果我们读取完毕,那么i = fis.read(buf);这个整体将会返回一个-1;(因为文件当中的数据已经被全部拿走了所以i的赋值结果为-1)
接下来我们使用while循环 就可以拿到文件中所有的数据了;
这个时候我们读取的文件存入buf,如果需要输出的让我们看到的话,可以使用new String(buf,0,i)来完成显示读取的文件
如果是read()这样的读取的话,是一个字节一个字节读取,直接赋值打印就能看到
我们来写入的时候需要:
write();
将需要带入的数据放在括号即可。
但是需要注意的是括号中的int类型的数据将自动转换为char
当然也可以放入数组,在数组将数组当中的数据getByte为数据放在数组当中写入文件
2.文件字符流:FileReader,FileWrite,是一种节点流。
直接可以面向文件进行字符间的操作。
基本操作为read以及write方法
但是要注意,读取的信息为int,原因是底层使用的InPutStreamRead,如果需要查看读取的数据,那么需要转为char类型。
所以要使用cahr类型的数组进行数据的快捷交换。
write需要注意的就是要close或者flush刷新内存/
3.缓冲字节流:将文件字节流中中转站添加缓冲区(8192),提高数据的传输效率。
BufferedInputStream;
read
底层是FileInPutStream,在数据的流传过程中添加了8192大小的byte类型数组
BufferedOutputStream;
write
底层是FileOutPutStream
4.缓冲字符流:用于文件之间字符的流转.对于可以理解为FileRead的一个包装提高了效率
BufferedReader,
readLine()
可以进行整行的文件读取,
BufferedWrite,
write()
newLine()
进行换行。
这里我们直接创建一个String类的获取readLine拿到的整行字符,然后进行write写入即可
使用while循环,条件为读取完毕返回的null
纯文本之间的字符操作应优先考虑缓冲字符流提高效率。
5.字节数组流:一种通过字节方式数据流转方式,是一种节点流,具体操作方式为将其他类型数据通过字节数组的方式流转数据。默认32为数组进行数据写入。
ByteArrayInputStream;
ByteArrayOutputStream; (32位数组
6.数据流:
一种处理流,包裹缓冲流BufferedInputStream,BufferedOutputStream,而缓冲类包裹了InputStream,OutputStream
将字节数据处理为一种可以对接的类型如String,int等,方便了数据的处理,一般我们在服务器和主机之间常常使用
DataInputStream;
DataOutputStream;
提取和写入的顺序需要一致。
理想状态为包装缓冲流,在Close的时候关闭最外层的流,即数据流即可。
7.转换流:将字节转换为字符
InputStreamReader 的作用是把 InputStream 转换成 Reader ,OutputStreamWriter 的作用是把 OutputStream 转换成 Writer
这里需要注意的是。在转换为字符的时候,需要确定字符集。
8.对象流:将数据转换为对象的形式进行读写的方式。
ObjectOutputStream;(序列化
ObjectInputStream; (反序列化
transient 和static修饰的变量无法保存。
serialVersionUID版本号需要在对于该对象的类进行声明,否则会导致反序列化失败提示NotSerializableException。
标签:转换 通过 leo 文本 显示 ali 在服务器 int foo
原文地址:https://www.cnblogs.com/Gavinsong/p/9905311.html