JAVA的IO操作:内存操作流

掌握内存操作流

输入和输出都是从文件中来的,当然,也可将输出的位置设置在内存上,这就需要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() ; // 取出内容,将缓冲区内容转换为字符串
     try{         bis.close() ;         bos.close() ;      }catch(IOException e){         e.printStackTrace() ;     } System.out.println(newStr) ;    }};

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

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

总结:

1,内存操作流的操作对象,一定是以内存为主准,不要以程序为准。

2,实际上此时可以通过向上转型的关系,为OutputStream或InputStream.

3,内存输出流在日后的开发中也是经常使用到,所以一定要重点掌握。

时间: 2024-12-18 20:17:46

JAVA的IO操作:内存操作流的相关文章

JavaLearning:JAVA IO 之内存操作流

package org.fun.io; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; public class ByteArrayDemo { public static void main(String[] args) { String str = "helloworld";// 定义字符串,全部由小写字母组成 ByteArrayOutputStream bos = null;//

java之IO字节流相关操作

File对象可以表示存在的文件或文件夹,也可以表示不存在的.我们想要得到文件的内容怎么办,File只是操作文件,文件的内容如何处理就需要使用io流技术了.例如在C盘下有一个名称为a.txt的文本文件.想要通过Java程序读出来文件中的内容,需要使用IO流技术.同样想要将程序中的数据,保存到硬盘的文件中,也需要IO流技术. IO流简介:(Input/Output) I/O类库中使用"流"这个抽象概念.Java对设备中数据的操作是通过流的方式.表示任何有能力产出数据的数据源对象,或者是有能

java之IO其它类型的流

一.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本java数据类型写入输出流中.然后,应用程序可以使用数据输入流将数据读入. package a; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import

Java基础IO类之对象流与序列化

对象流的两个类: ObjectOutputStream:将Java对象的基本数据类型和图形写入OutputStream ObjectInputStream:对以前使用ObjectOutputStream写入的基本数据和对象进行反序列化 序列化一组对象: 在系列化操作中,同时序列化多个对象时,反序列化也必须按顺序操作,如果想要序列化一组对象该如何操作呢? 序列化一组对象可采用,对象数组的形式,因为对象数组可以向Object进行转型操作. 把对象序列化到文件当中,然而文件中存的是字节.我们对象里面相

Java基础IO类之字符串流(查字符串中的单词数量)与管道流

一.字符串流 定义:字符串流(StringReader),以一个字符为数据源,来构造一个字符流. 作用:在Web开发中,我们经常要从服务器上获取数据,数据返回的格式通常一个字符串(XML.JSON),我们需要把这个字符串构造为一个字符流.然后再用第三方数据解析器来解析数据. 代码示例:计算一个字符串有多少个单词 package IODemo; import java.io.IOException; import java.io.StreamTokenizer; import java.io.St

JAVA的IO编程:管道流

掌握线程通讯流(管道流)的使用 管道流的主要作用是可以进行两个线程间的通讯,分为管道输入流(PipeOutputStream)和管道输出流(PipeInputStream). 如果要想进行管道输出,则必须把输出流连在输入流之上,在PipeOutputStream上有如下方法用于连接管道. void connect(PipedInputStream snk) 将此管道输出流连接到接收者. 要想连接输入和输出,必须使用此方法. PipeOutputStream输出方法: void write(byt

Java基础IO类之打印流

package IODemo; import java.io.*; /* 打印流 : 很方便的进行输出 字节打印流 增强输出功能 字符打印流 */ public class PrintStreamDemo { private static void charPrint(){ File file = new File("d:\\test\\t.txt"); try { Writer w = new FileWriter(file,true); BufferedWriter br = ne

Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)

1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出流写入稍后由数据输入流读取的数据. · DataOutputStream:数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中.然后,应用程序可以使用数据输入流将数据读入. package datastreamdemos; import java.io.*; /** * Created b

java的IO操作:字节流与字符流操作

流的概念 程序中的输入输出都是以流形式,流中保存的实际上都是字节文件. 字节流与字符流 字节流的操作: 1)输入:inputStream, 2)输出:outPutStream; 字符流的操作: 1)输入主要使用:write类. 2)输出主要使用:reader类. 内容操作就四个类. 操作流程: 使用File类操作一定有路径问题,注意分隔符: 实际上四个操作类都是抽象类(区别接口,抽象类的成员都是抽象,并且只能单继承,接口可以有全局变量,但是接口可以多继承) IO操作属于资源操作,对于资源操作,操