2020.8.2 + 周报(4)
一、今日学习内容 每周周报
1、过滤(处理)流
通常字节流只具有读写字节内容的方法,它们只能在文件中读取或者向文件中写入字节,在实际开发中往往需要在文件中读取或写入各种类型的数据,如整型、布尔类型等数据,就必须先将其他类型的数据转换成字节数组后写入文件,或者从文件中读取到的字节数组转换成其他数据类型,这时就需要包装类,它提供了向各种输出流对象中写入各种类型数据的方法。
(1) DataOutputStream
对于DataOutputStream必须给它传一个输出流对象,完成类似DataOutputStream功能的类就是一个过滤流类或处理流类。
DataOutputStream包装类的构造函数语法如下。
public a DataOutputSt ream (OutputStream out)
DataOutputStream的部分方法列表如表所示。
示例:
import java.io.DataOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class DataOutputStreamDemo { public static void main(String[] args)throws IOException { write(); } public static void write()throws IOException{ OutputStream os=new FileOutputStream("D:/Hello.txt"); DataOutputStream dos=new DataOutputStream(os); dos.writeInt(123); dos.writeBoolean(true); dos.writeByte(34); dos.writeBytes("Hello"); dos.writeChar(58); dos.writeChars("java"); dos.writeDouble(20.0); dos.writeFloat(20f); dos.writeShort(31); dos.writeUTF("C++"); dos.writeLong(13L); dos.flush(); dos.close(); } }
(2)DataInputStream
import java. io. DataInputStream; import java. io.FileInputStream; import java. io. IOException; import java.io. InputStream; public class DataIntputStreamDemo{ public static void main(String[] args) throws IOException { read() ; } public static void read() throws IOException { InputStream in = new FileInputStream("D:/Hello.txt"); DataInputStream dis =new DataInputStream(in) ; int a=dis.readInt() ; boolean flag = dis. readBoolean(); byte b=dis.readByte(); char c=dis.readChar(); double d=dis.readDouble(); float f=dis.readFloat(); short s=dis.readShort (); long l=dis.readLong(); dis.close(); System.out.println(a); System.out.println(flag) ; System.out.println(b); System.out.println(c); System .out.println(d); System .out.println(f); System.out.println(s); System.out.println(l); } }
2、内存操作流
之前的文件操作流是以文件的输入和输出为主的,文件操作流的输出位置是硬盘,但如果将输入输出的位置改变成了内存,就称为内存操作流,使用ByteArrayInputStream 完成内存的输入操作,而使用ByteArrayOutputStream完成内存的输出操作。
示例:使用内存操作流输出内容
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class ByteOutputStreamDemo { public static void main(String[] args)throws IOException { outin(); } public static void outin()throws IOException{ String info="hello java"; InputStream input=new ByteArrayInputStream(info.getBytes()); OutputStream output=new ByteArrayOutputStream(); int temp=0; while((temp=input.read())!=-1) { output.write(Character.toUpperCase((char)temp)); } String str=output.toString(); input.close(); output.close(); System.out.println(str); } }
输出结果:HELLO JAVA
二、遇到的问题
对过滤流相关方法记不住,对内存操作流的用法也不是很清楚
三、明日计划
明日继续学习第12章
收获:
在过去一周学习了第八章对异常的处理以及第十二章用I/O进行数据处理的部分内容,对异常的处理方法:java异常处理的方法一般有两种,分别是使用try…catch…finally…和throws来操作,对每一个方法分别进行了学习,还学习了用log4j记录日常日志信息;学习了文件操作,流和流的分类,字符流,字节流,过滤流,内存操作流等相关知识。
遇到的问题:
对新学习的方法及相关用法不能记得很清楚,不熟悉
下周计划:
学习完第12章内容,用JAVA对c++的例题重新编写