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。

  • 相关阅读:
    SQL学习
    FOR XML PATH
    IOS学习网址
    weak nonatomic strong等介绍(ios)
    UVALive3045 POJ2000 ZOJ2345 Gold Coins
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA10905 Children's Game
  • 原文地址:https://www.cnblogs.com/huan-guo/p/8524635.html
Copyright © 2011-2022 走看看