输入输出流

来源:互联网 发布:中兴通讯知乎 编辑:程序博客网 时间:2024/06/05 07:23

package www.test;

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

public class Demo {
public static void main(String[] args) {
 //字节的输入输出流
 InputStream is=System.in;//标准的输入流对象--读取操作
 OutputStream os=System.out;//标准的输出流对象---写的操作
 
 try{
 byte[] buffer=new byte[10];//缓冲区//0 1 2 3 4 5 6 7 8 9 //指定内存大小
 int len=0;//读取之后的实际长度//在UTF8编码下,回车\r ,换行 \n也各占1个字节
 /*
  * read 方法参数
  * b-读入数据的缓冲区
  * off-数组b中将写入数据的初始偏移量
  * len-要读取的最大字节数
  */
 /*
  * write
  * str - 字符串
  * off - 相对初始写入字符的偏移量
  * len - 要写入的字符数
  */
 while((len=is.read(buffer,2,3))!=-1){//2——〉指从内存中脚标2开始读取,3——〉指从内从中取3位
    System.out.println("读取的实际长度------------"+len);//字符长度
    os.write(buffer,1, 4);//1——〉指从内存中脚标1开始写出,4——〉指从内从中取4位

    System.out.println("--------------");
 }
 }catch(IOException e){
  e.printStackTrace();
 }
 
}
}

由上面测试结果可得出


键盘上输入1234

根据read(buffer,2,3)

读取3个字符

从内存byte数组中下标第2个开始读入

根据write(buffer,1, 4)

写出4个字符

从内存byte数组中下标第1个开始获取4个字符

缓冲区域的数据一旦写入就会一直存在,等待下一次读入数据的覆盖

键盘上输入的数字大于读取的数字,所以利用while循环再次读取(回车\r ,换行 \n共占2个字节

 

 

原创粉丝点击