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++的例题重新编写

原文地址:https://www.cnblogs.com/wmdww/p/13423247.html