zoukankan      html  css  js  c++  java
  • JAVA基础——内存流

    掌握内存操作流

    输入和输出都是从文件中来的,当然,也可将输出的位置设置在内存上,这就需要ByteArrayInputStream和ByteArrayOutputStream

    ByteArrayInputStream:将内容写入到内存中

    ByteArrayOutputStream:将内存中数据输出

    此时的操作应该以内存为操作点。

    利用此类 完成一些功能。


    常用方法

    ByteArrayInputStream :是InputStream子类。

    public class ByteArrayInputStream extends InputStream

    构造方法:

    ByteArrayInputStream(byte[] buf) 
              创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组。

    接收一个byte数组,实际上内存的输入就是在构造方法上将数据传递到内存之中。

    ByteArrayOutputStream:是OutputStream子类

    输出就是从内存中写出数据。

    public class ByteArrayOutputStream extends OutputStream

    构造方法:

    ByteArrayOutputStream() 
              创建一个新的 byte 数组输出流。

    主要方法:

    void write(int b) 
              将指定的字节写入此 byte 数组输出流。 

    利用他们,完成一个大小写字母转换顺序的程序。

    重温一下这个方法:getBytes();定义如下:返回的是一个byte类型的数组。 

        public byte[] getBytes() {
            return StringCoding.encode(value, 0, value.length);
        }

    1,

    int size() 
              返回缓冲区的当前大小 

    2,

    byte[] toByteArray() 
              创建一个新分配的 byte 数组。 

    3,

    String toString() 
              使用平台默认的字符集,通过解码字节将缓冲区内容转换为字符串

    利用他们,完成一个大小写字母转换顺序的程序

    String类的大小写转换方法:

     String toLowerCase() 
              使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 

    转大写:

    String toUpperCase() 
              使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 

    如果要想把一个大写边小写,则可以通过包装类,字符的包装类是Character

    static char toLowerCase(char ch) 
              使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为小写。 

    代码实例:

    注意,跟文件读取不一样,不要设置文件路径

    复制代码
    复制代码
    package 类集;
    import java.io.* ;
    public class ByteArrayDemo01{
        public static void main(String args[]){
            String str = "HELLOWORLD" ;        // 定义一个字符串,全部由大写字母组成
            ByteArrayInputStream bis = null ;    // 内存输入流
            ByteArrayOutputStream bos = null ;    // 内存输出流
            bis = new ByteArrayInputStream(str.getBytes()) ;    // 向内存中输出内容,注意,没有跟文件读取一样,设置文件路径。
            bos = new ByteArrayOutputStream() ;    // 准备从内存ByteArrayInputStream中读取内容,注意,跟文件读取不一样,不要设置文件路径
         int temp = 0 ;       while((temp=bis.read())!=-1)     {        char c = (char) temp ; // 读取的数字变为字符         bos.write(Character.toLowerCase(c)) ; // 将字符变为小写       } // 所有的数据就全部都在ByteArrayOutputStream中       String newStr = bos.toString() ; // 因为所有output的数据都在ByteArrayOutputStream实例对象中,所以可以取出内容,将缓冲区内容转换为字符串
         try{          bis.close() ;          bos.close() ;       }catch(IOException e){          e.printStackTrace() ;      } System.out.println(newStr) ;     } };
    复制代码
    复制代码

    实际上以上操作很好体现了对象的多态。通过实例化其子类不同,完成的功能也不同,也就相当于输出的位置不同,

    如果是输出文件,则使用FileXxxx类。如果是内存,则使用ByteArrayXxx。

  • 相关阅读:
    项目打包发布到tomcat中,中文出现乱码
    打war包时无法把src/main/java里的xml文件打包上去
    Activemq和Rabbitmq端口冲突
    博客园皮肤炫酷效果
    centos7 ffmpeg安装
    centos7 nginx开启启动
    磁盘满了,找不到占磁盘的文件或者日志
    turn服务部署
    kvm虚拟机配置被克隆rhel6客户机的网卡
    jenkins自动构建
  • 原文地址:https://www.cnblogs.com/huan-guo/p/8524635.html
Copyright © 2011-2022 走看看