【Java 笔记】字节输出/输入流类:OutputStream/InputStream

OutputStream 字节输出流

  • java.io.OutputStream 所有字节输出流的超类
  • 作用: 从Java程序写出文件
  • 字节: 这样流每次只操作文件中的1个字节
  • 写任意文件
  • 方法都是写入的方法
  • write(int b) 写入1个字节
  • write(byte[] b) 写入字节数组
  • write(byte[] b,int,int length)写入字节数组,int 开始写入的索引, Len 写几个
  • close() 方法,关闭流对象,释放与次流相关的资源
  • 流对象,操作文件的时候, JVM不做caozuo,依赖操作系统

FileOutputStream

流对象使用步骤:

  1. 创建流子类的对象,绑定数据目的
  2. 调用流对象的方法write写
  3. close释放资源

流对象的构造方法,可以创建文件,如果文件存在,直接覆盖。

import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("e:\\a.txt");// 流对象的构造方法,可以创建文件,如果文件存在,直接覆盖
        //流对象的方法write写数据
        //写1个字节
        int i=64;
        fos.write(i);//ASC码表
        fos.write(97);
        //48--0
        fos.write(48);
        fos.write(49);
        fos.write(48);

        //写字节数组
        byte[] bytes = {65,66,67,68};
        fos.write(bytes);

        //写字节数组的一部分,开始索引,写几个
        fos.write(bytes, 1, 2);

        byte[] bytes1 = {-65,-66,-67,-68};//负数代表汉字,GBK编码啊中一个汉字两个字节
        fos.write(bytes1);
        fos.write("abcd\n".getBytes());//WRITE中只可以写字节,不可以写字符串
        
        function();//文件续写
        function();
    }
    private static void function() throws IOException {
        FileOutputStream fos = new FileOutputStream("e:\\a.txt",true);
        fos.write("apped\n".getBytes());//换行\n\r
    }
}

InputStream 字节输入流

FileIntputStream

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class FileInputStreamDemo {

    public static void main(String[] args) {

        /*程序->虚拟机JVM->OS操作系统(实际是操作系统在读数据)
        */
        FileInputStream fis = null;
        try {
            fis = new FileInputStream("e:\\a.txt");
            int i=fis.read();
            System.out.println(i);
            i=fis.read();//一次只读一个字节,当到达结尾返回数值(-1);
            System.out.println(i);
            System.out.println(fis.read());
            while((i=fis.read())!=(-1)){
                System.out.print((char) i);//Int类型向字符转换
            }
            System.out.println("\n=========================================");
            File f=new File("e:\\a.txt");
            fis = new FileInputStream(f);
           // System.out.println(f.length());
           // byte[] b=new byte[(int)f.length()];
            byte[] b=new byte[9];// 将读到的指定长度字节组存入数组b中
            int l=fis.read(b);//返回字节的长度,当读到末尾时返回-1
            System.out.println(new String(b));//查询编码表
            System.out.println(l);
            while((i=fis.read(b))!=(-1)){
                System.out.print(new String(b,0,i));
            }
        }catch(IOException ex){
            System.out.println(ex.getMessage());
        }finally {
            try{
            fis.close();
            }catch (IOException ex){
                throw new RuntimeException("文件关闭失败");
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值