JavaIO——标准输入输出

字符编码:    
  国标编码:
  GBK包含简体中文和繁体中文;
  GB2312只包含简体中文。
  UNICODE编码:   java提供的16进制编码,可以描述世界上任意的文字信息,传输负担大。
  ISO8859-1: 国际通用编码,但是所有的编码都需要进行转换
  UTF编码:  相当于结合了UNICODE、ISO8859-1,也就是说需要使用到16进制文字使用UNICODE,而 如果只是字母就使用ISO8859-1,而常用的就是UTF-8编码形式。 
内存操作流
  概念:    
     内存作为操作终端的IO操作;
  内存流也分为两类:
     1. 字节内存流:ByteArrayInputStream、ByteArrayOutputStream 
     2. 字符内存流:CharArrayReader、CharArrayWriter 
  实例:
   String msg = "hello world";    
   // 实例化InputStream类对象,实例化的时候需要将你操作的数据保存到内存之中        
   // 终读取的就是你设置的内容。    
   InputStream input = new ByteArrayInputStream(msg.getBytes()) ;        
   OutputStream output = new ByteArrayOutputStream() ;        
   int temp = 0 ;      
   while((temp = input.read()) != -1) {  
   // 每个字节进处理,处理之后所有数据都在outputStream类中  
   output.write(Character.toUpperCase(temp)) ;      
   }  
   // 直接输出output对象     
   System.out.println(output) ;      
   input.close() ;     
   output.close() ; 
只是使用InputStream类,在进行数据完整读取的时候会很不方便,结合内存流的使用会好很多。 
打印流:
  概念:
     打印流解决的就是OutputStream的设计缺陷,属于OutputStream功能的加强版
     解决两方面:
      1. 所有的数据必须转换为字节数组。
      2. 如果要输出的是int、double等类型就不方便了
  分类:
     字节打印流:PrintStream、字符打印流:PrintWriter(使用率较高)
  打印流的设计属于装饰设计模式:核心依然是某个类的功能,但是为了得到更好的操作效果,让其支持的功能更多 一些。
  格式化输出:
        PrintWriter printUtil = new PrintWriter(new FileOutputStream(new File("/Users/ma/Desktop/test.txt"))) ;   
        printUtil.printf("姓名:%s,年龄:%d,工资:%1.2f", name,age,salary) ; 
        printUtil.close();
  格式化字符串:
         String str = String.format("姓名:%s,年龄:%d,工资:%1.2f", name,age,salary, name,age,salary) ;        
         System.out.println(str);
System 类对IO支持:
     1. 标准输出(显示器) : public final static PrintStream out
     2. 错误输出 : public final static PrintStream err 
     3. 标准输入(键盘):public final static InputStream in
两种输入流:
  BufferedReader类:
       
属于一个缓冲的输入流,而且是一个字符流的操作对象
    实例:
       BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)) ;   
       System.out.println("请输入信息 :") ;    
       // 默认的换行模式是BufferedReader的大缺点  
       String str = buf.readLine() ; 
       // 默认使用回车换行 
       System.out.println("输入信息为:" + str );
 java.util.Scanner类 
      1. 判断是否有指定类型数据: public boolean hasNextXxx()
      2. 取得指定类型的数据: public 数据类型 nextXxx() 
      3. 定义分隔符:public Scanner useDelimiter(Pattern pattern)
      4. 构造方法:public Scanner(InputStream source) 
    实例:
       Scanner scanner = new Scanner(System.in) ;     
       System.out.println("请输入数据:") ;   
       if (scanner.hasNext()) {
       // 有输入内容,不判断空字符串   
       System.out.println("输入内容为: "+scanner.next());     
       }   
       scanner.close() ;     
以后除了二进制文件拷贝的处理之外,那么只要是针对程序的信息输出都是用打印流(PrintStream、 PrintWriter),信息输出使用Scanner。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值