欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

字节输出流输入流

程序员文章站 2022-04-09 16:43:33
...

字节输出流输入流

什么是流?

流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等

输出流

从内存中把输出数据写入文件中。使用步骤:1.创捷流对象FileOutputStream 2.调用写数据方法如write 3.释放资源

		//1.创建一个FileOutputStream对象,构造方法传递写入数据的目的地
        FileOutputStream fos = new FileOutputStream("a.txt");//根目录即为项目文件夹
        //2.1调用write方法把数据写入文件中,一次读取一个字节
        fos.write(97);
        fos.write(98);
        fos.write(99);
		//2.2一次读取多个字节
		byte[] bytes = {-65,-66,-67,68};
		byte[] bytes2 = "字符串".getBytes();
		fos.write(bytes);
         fos.write(bytes2);
         fos.close();//先传入数字在传入文字则出现奇怪的情况,貌似是把文字转换为数字进行解码	
        //3.释放资源,清空占用内存
        fos.close();
提示:1.以字符数组形式输出时,会将字节转换为字符进行存储,如果传入数字为0-127则查找ASCII编码,如果传入第一个数字为负数则将第一个,第二个数字转换为中文编码,第三为正数则单字节继续编码,以此类推。
2.FileOutputStream fos = new FileOutputStream("c.txt",true);//参数 true开启追加 false关闭追加,不写参数则每次都为覆盖写入

输入流

从文件中输入数据到内存中。使用步骤:1.构造流对象 2.使用read方法 3.关闭资源

	    //一次读取一个字节
    	int len;
        FileInputStream fis = new FileInputStream("b.txt");
        while((len=fis.read())!=-1){
            System.out.println((char)len);
        }
        fis.close();

		//一次读取多个字节
        FileInputStream fis = new FileInputStream("a.txt");
        byte[] bytes = new byte[2];
        int len;
        while((len= fis.read(bytes))!=-1){
            System.out.println(new String(bytes,0,len));
            //offset 起点 , 长度
        }
        fis.close(); 
提示:1.一个读取一个字节read返回值为获取的字符
	2.一次读取多个字节返回数为读取的有效长度。使用数组进行缓冲读取。效率远远高于一次读取一个字节
	

文件复制

		long s = System.currentTimeMillis();
        FileOutputStream fos = new FileOutputStream("iu.jpg");
        FileInputStream fis = new FileInputStream("D:\\iu.jpg");
        /*byte[] bytes = new byte[1024];
        int len;
        while((len = fis.read(bytes))!=-1){
            fos.write(bytes,0,len);
        }*/
        int len ;
        while((len= fis.read())!=-1){
            fos.write(len);
        }
        fis.close();
        fos.close();
        long e = System.currentTimeMillis();
        System.out.println("本次运行耗时"+(e-s)+"毫秒");
提示:1.释放资源时,先输入再输出
	 2.可以测试一个字节读取/多个字节读取运行时间
相关标签: java基础知识