• System.in与System.out(标准输入与标准输出)详解


    package test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    public class TestIo {
    
    	public static void main(String[] args) {
    		// 创建标准输入流的对象
    		InputStream is = System.in;
    		// 创建标准输出流的对象
    		OutputStream os = System.out;
    		try {
    			// 创建指定长度的缓冲区
    			byte[] buffer = new byte[10];
    			// 定义结束条件,检测实际的读取字节长度
    			int len = 0;
    			// len接收输入流is向Buffer实际读入的字节长度	
    			// 循环(无所谓,在这里呈现的是可以一直在控制台测试的结果)
    			while ((len=is.read(buffer, 0, 4) )!= -1) {// 如果输入流不是控制台接收的,是从资源读取时,当读取完资源时read返回-1,即结束循环
    				// 显示实际的读取字节长度
    				System.out.println("缓存字符长度:" + len);
    				// os接收由Buffer中向外写入的信息,并直接显示在控制台
    				os.write(buffer, 0, 4);
    				System.out.println("---------------");
    			}
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }
    
    /*
     * 测试结果呈现: 从键盘输入: 12345
     * 
     * 
     * 控制台输出结果:
     * 
     * 缓存字符长度:4 1234--------------- 缓存字符长度:3 5 4---------------
     * 
     * 
     * 从呈现的结果并结合API分析得到: 
     * 缓冲区域内的数据一旦写入就会一直存在,等待下一次读入数据的覆盖;
     * 所以,当第二次的读入操作长度没有达到指定缓存区长度时, 缓存区内会有上一次数据的残留, 这就是最后4输出的原因; 
     * 注意:在UTF-8编码下,回车 
     ,换行 
     各占一个字节,当在控制台进行回车操作时会向输入流中写入这两个编码
     */



  • 相关阅读:
    国内顺利使用Google的另类技巧
    Java进程间通信
    Java 多线程(七) 线程间的通信——wait及notify方法
    转:关于copy_to_user()和copy_from_user()的一些用法
    转: pthread_detach()函数
    转:pthread_create()
    转: ubuntu配置NFS,挂载开发板
    转:全志A20 GPIO 总结文档
    转:Linux 内核中的 cdev_alloc和cdev_add
    转:1.1 cdev_init cdev_alloc 使用说明
  • 原文地址:https://www.cnblogs.com/pangblog/p/3359974.html
Copyright © 2020-2023  润新知