Java暑期学习第二十六天日报

一、今日学习内容:

今天学习了12.2.2 过滤流、12.2.3内存操作流的内容。

二、遇到的问题:

 无

三、明日计划:

明天计划学习12.2.4缓冲流、12.2.5Scanner类、12.2.6对象序列化与反序列化的内容

 

今日学习的具体内容如下:

1.过滤流

整型、布尔型数据需要转换为字节数组后写入文件,或者从文件中读取到的字节数组转换为其他类型数据,这时候需要包装类,它提供了向各种输出流对象写入各种类型数据的方法。

(1)DataOutputStream

对于DataOutputStream必须给它传一个输出流对象,完成类似DataOutputStream功能的类就是一个过滤流类或处理流类。

DataOutputStream构造函数语法:

 

 

 

DataOutputStream的常见方法:

 

 

实例——使用DataOutputStream写入内容

import java.io.IOException;
import java.io.DataOutputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
public class DataOutputStreamDemo {
    public static void main(String[] args)throws IOException{
        write();
    }
    public static void write() throws IOException{
        OutputStream out=new FileOutputStream("D:\\dataWrite.txt");
        DataOutputStream dos=new DataOutputStream(out);
        dos.writeInt(123);
        dos.writeBoolean(true);
        dos.writeByte(34);
        dos.writeBytes("hello");
        dos.writeChar(58);
        dos.writeChars("good");
        dos.writeDouble(13.14);
        dos.writeFloat(20f);
        dos.writeShort(31);
        dos.writeUTF("c++");
        dos.writeLong(13L);
        dos.flush();
        dos.close();
    }

}

 

(2)DataInputstream

实例——用DataInputStream读数据

import java.io.DataInputStream;
import java.io.IOException;
import java.io.FileInputStream;

public class DataInputStreamDemo {
    public static void main(String [] args)throws IOException{
        read();
    }
    public static void read()throws IOException{
        FileInputStream in=new FileInputStream("D:/datahello.txt");
        DataInputStream dis=new DataInputStream(in);
        int a=dis.readInt();
        boolean b=dis.readBoolean();
        byte c=dis.readByte();
        char d=dis.readChar();
        double e=dis.readDouble();
        float f=dis.readFloat();
        short g=dis.readShort();
        long h=dis.readLong();
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
        System.out.println(f);
        System.out.println(g);
        System.out.println(h);
        dis.close();
        
    }

}

测试截图:

 

 

2.内存操作流

(1)输出位置

文件操作流 文件的输出输入流的输出位置是硬盘
内存操作流 输入输出位置是内存,使用ByteArrayInputStream完成内存的输入操作,使用ByteArrayOutputStream完成内存的输出操作

 

 

 

 

 

 

 

(2)实例——使用内存操作流输出内容

import java.io.IOException;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.InputStream;

public class ByteOutputStreamDemo {
    public static void main(String[] args)throws IOException{
        outin();
    }
    public static void outin() throws IOException{
        String info="hello java";
        InputStream in=new ByteArrayInputStream(info.getBytes());
        OutputStream out=new ByteArrayOutputStream();
        int temp=0;
        while((temp=in.read())!=-1) {
            out.write(Character.toUpperCase((char)temp));
        }
        String s=out.toString();
        in.close();
        out.close();
        System.out.println(s);
        
    }

}

测试截图:

 

posted on 2020-07-31 21:23  桑榆非晚柠月如风  阅读(108)  评论(0编辑  收藏  举报