输入输出字节流

1、IO流:
输入流:Input:只能从中读取数据,而不能向其写入数据。一般用于将数据从网络、硬盘读取到内存中。
输出流:Output:只能向其写入数据,而不能从中读取数据。一般用于将数据从内存中写入到网络、硬盘。

2,输入流与输出流

输入流:只能从中读取数据,而不能向其写入数据。一般用于将数据从网络、硬盘读取到内存中。
输出流:只能向其写入数据,而不能从中读取数据。一般用于将数据从内存中写入到网络、硬盘。
输入流主要由InputStream作为父类。InputStream:所有字节输入流的超类,向程序输入使用FileInputStream;
输出流主要由OutputStream作为父类。OutputStream:此为抽象类,所有输出字节流的超类,向文件中输出使用FileOutputStream类;
他们都是抽象的,因此无法直接创建对象。
3,字节流与字符流
字节流与字符流的用法几乎完全一样,区别在于所操作的单位不同,字节流操作8位的字节,
而字符流操作16位的字符。
字节流主要由InputStream和OutputStream作为父类。字符流主要由Reader和Writer作为父类。
字节流有助于执行8位字节的输入和输出操作,处理数据逐字节,适用于处理二进制文件等原始数据。字节流操作最常用的类是FileInputStream和FileOutputStream。FileInputStream有助于从源读取,而FileOutputStream有助于写入目标。

输出

public class text3 {
    public static void main(String[] args) throws IOException {
        //输出流
        /*File f2=new File("D:/a");
        File f3=new File(f2,"a.txt");
        f2.mkdirs();
        f3.createNewFile();
        */
        File f1=new File("D:/aa.txt");//使用File对象创建流对象
        f1.createNewFile();
        OutputStream out=new FileOutputStream(f1);//定义一个输出流
        //out.write(97);按照ASCII解析写入文件
        //Scanner sc=new Scanner(System.in);
        //System.out.println("请输入:");
        String msg="爱你";
        byte[] bytes=msg.getBytes();//获取字符串对应解析后的byte数组
        out.write(bytes);//把byte数组写入文件,相当于把字符串写入文件中
 
    }
}

输出

 public static void main(String[] args) throws IOException {
        //输出流:内存的内容输出到文件(写操作) 输入流:文件内容输入到内存中(读操作)
        File f1=new File("d:/a.txt");
        //创建一个输入流,读取f1这个文件
        InputStream input=new FileInputStream(f1);
        //read()读取文件的一个字符,然后把字符转换为对应的数字返回。如果读取到文件的末尾,返回-1
//        int n;//定义变量
//        //循环读取
//        while ((n= input.read())!=-1){
//            //打印
//            System.out.println((char)n);
//        }
        //input.read(byte[b])使用缓冲区读取:一次读取数组长度个元素,读取到的字符转换成数字存入数组中,返回的是实际读取的字节数,,已经在文件的末尾返回-1
        //newString可以存入byte数组
        byte[] b=new byte[10];//定义byte数组,指定长度,作为读取缓冲区
        int n = input.read(b);//按照数组长度去读取,读取内容存在数组中,返回的是实际读取的字节数
        String s=new String(b,0,n);//对数字从0索引开始  截取实际读取的长度产生字符串
        System.out.println(s);
 
        byte[] b1=new byte[10];
        int n1 = input.read(b1);//要求读10个,实际只有5个 剩下是无效数据
 
        String s1=new String(b1,0,n1);
        System.out.println(s1);
 
        byte[] b2=new byte[10];
        int n2 = input.read(b2);//要求读10个,实际只有5个 剩下是无效数据
 
        System.out.println("n2的值:"+n2);
        String s2=new String(b1,0,n2);
        System.out.println(s2);
    }

文件的复制

 /*
    文件复制
    */
    public static void main(String[] args) throws IOException {
        //1.定义源文件和目标文件的File对象
        File f1 = new File("d:/a.txt");
        File newFile = new File("D:/aa/newFile");
 
        //2,定义输入输出流关联文件
        InputStream inputStream = new FileInputStream(f1);
        OutputStream outputStream = new FileOutputStream(newFile);
 
        //使用输入流读取内容,然后把读取的内容写入目标文件中
 
        //一个一个字节进行读写
//        int n;
//        while((n=inputStream.read())!=-1){
//            outputStream.write(n);
//        }
        //使用缓冲区读写
        long Start=System.currentTimeMillis();
 
        byte[] bytes=new byte[1024];
        int n;
        while ((n=inputStream.read(bytes))!=-1){
            outputStream.write(bytes,0,n);
        }
        Long stop=System.currentTimeMillis();
 
        System.out.println("耗时:"+(stop-Start));
 
        //使用io复制视频
 
    }

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值