Java IO流学习笔记2

1、IO流-序列流:SequenceInputStream(InputStream, InputStream)
    序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读。
        FileInputStream fis1 = new FileInputStream("a.txt"); //创建输入流对象,关联a.txt
        FileInputStream fis2 = new FileInputStream("b.txt"); //创建输入流对象,关联b.txt
        SequenceInputStream sis = new SequenceInputStream(fis1, fis2); //将两个流整合成一个流
        FileOutputStream fos = new FileOutputStream("c.txt"); //创建输出流对象,关联c.txt
        
        int b;//按字节流读取,定义b接受一个字节数据
        while((b = sis.read()) != -1) { //用整合后的读
            fos.write(b); //写到指定文件上
        }
        
        sis.close();
        fos.close();
        
    关闭流的时候,只需要关闭序列流即可。
    
2、IO流-内存输出流:ByteArrayOutputStream
    内存输出流可以向内存中写数据, 把内存当作一个缓冲区, 写出之后可以一次性获取出所有数据。
    
    使用方式:
创建对象: new ByteArrayOutputStream()
写出数据: write(int), write(byte[])
获取数据: toByteArray()
        
        FileInputStream fis = new FileInputStream("a.txt");
        ByteArrayOutputStream baos = new ByteArrayOutputStream();//定义一个内存输出流
        int b;
        while((b = fis.read()) != -1) {
            baos.write(b);
        }
        
        //byte[] newArr = baos.toByteArray(); //也可以创建数组接收
        //System.out.println(new String(newArr));
        System.out.println(baos);//可以直接输出流对象
        fis.close();
        
        
3、IO流-对象操作流:ObjecOutputStream、ObjectInputStream
    可以用于存档游戏数据。
    
    写出:
        Person p1 = new Person("张三", 23);
        Person p2 = new Person("李四", 24);
//FileOutputStream fos = new FileOutputStream("e.txt"); 
//fos.write(p1);//会出现错误
//FileWriter fw = new FileWriter("e.txt");
//fw.write(p1);//会出现错误
        //无论是字节输出流,还是字符输出流都不能直接写出对象
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("e.txt"));//创建对象输出流
        oos.writeObject(p1);
        oos.writeObject(p2);
        oos.close();
        
    读取:    
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e.txt"));
        Person p1 = (Person) ois.readObject();
        Person p2 = (Person) ois.readObject();
        System.out.println(p1);
        System.out.println(p2);
        ois.close();
        
4、IO流-标准输入输出流:
    System.in是InputStream, 标准输入流, 默认可以从键盘输入读取字节数据
System.out是PrintStream, 标准输出流, 默认可以向Console中输出字符和字节数据   
        
    也可以调用System类的方法修改输入输出流
        修改输入流: System.setIn(InputStream)
        修改输出流: System.setOut(PrintStream)
        System.setIn(new FileInputStream("a.txt")); //修改标准输入流
System.setOut(new PrintStream("b.txt"));
        
5、IO流-两种方式实现键盘录入:
    a、BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//InputStreamReader 是一个字符输入流
    b、Scanner
        Scanner sn = new Scanner(System.in);
        sn.nextline();
    
6、IO流-数据输入输出流: DataInputStream, DataOutputStream
    DataOutputStream dos = new DataOutputStream(new FileOutputStream("b.txt"));
    dos.writeInt(997);
    dos.writeInt(998);
    dos.writeInt(999);
    
    dos.close();
    
    注意:如果没有用数据流,写数据会将数据的前24位(int数据共32位,写后8位的byte)丢掉,会有问题。
    
    
    
    






        
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值