详解 字符内存操作流

目录

  • 字符内存操作流

    • CharArrayWrite类:
    • CharArrayReader类:
    • StringWriter类:
    • StringReader类:

(请观看本人博文——《详解 内存操作流》



@


字符内存操作流

字符内存操作流 按照功能分 ,共分为 两种:

分类

  1. 操作字符数组
    CharArrayWrite
    CharArrayReader
  2. 操作字符串
    StringWriter
    StringReader

那么,本人现在就对这两种字符内存操作流进行下讲解:



首先是 操作字符数粗的 CharArrayWrite类 和 CharArrayReader类:

CharArrayWrite类:

首先,本人来展示下这个类的构造方法
构造方法

  • CharArrayWriter()
    创建一个新的 CharArrayWriter
  • CharArrayWriter(int initialSize)
    创建一个具有指定初始大小的新 CharArrayWriter

现在,本人来展示下这个类的常用API

常用API

  • CharArrayWriter append(char c)
    将指定字符添加到此 writer
  • CharArrayWriter append(CharSequence csq)
    将指定的字符序列添加到此 writer
  • CharArrayWriter append(CharSequence csq, int start, int end)
    将指定字符序列的子序列添加到此 writer
  • void close()
    关闭该流
  • void flush()
    刷新该流的缓冲
  • void reset()
    重置该缓冲区,以便再次使用它而无需丢弃已分配的缓冲区
  • int size()
    返回缓冲区的当前大小
  • char[] toCharArray()
    返回输入数据的副本
  • String toString()
    将输入数据转换为字符串
  • void write(char[] c, int off, int len)
    将字符写入缓冲区
  • void write(int c)
    将一个字符写入缓冲区
  • void write(String str, int off, int len)
    将字符串的某一部分写入缓冲区
  • void writeTo(Writer out)
    将缓冲区的内容写入另一个字符流

现在,本人来展示下这些API的使用:

package edu.youzg.about_io.about_file.core.Test;

import java.io.*;

public class Test {

    public static void main(String[] args) throws IOException{
        CharArrayWriter writer = new CharArrayWriter();
        writer.write("右转哥");
        writer.write("666");
        writer.write("我要单推右转哥");

        //取出缓冲区中的数据
        char[] chars = writer.toCharArray();
        System.out.println(String.valueOf(chars));
        System.out.println(new String(chars));
        System.out.println(writer.toString());
    }

}

现在,本人来展示下运行结果:

CharArrayReader类:

首先,本人来展示下这个类的构造方法

构造方法:

  • CharArrayReader(char[] buf)
    根据指定的 char 数组创建一个 CharArrayReader
  • CharArrayReader(char[] buf, int offset, int length)
    根据指定的 char 数组创建一个 CharArrayReader

现在,本人来展示下这个类的常用API

常用API:

  • void close()
    关闭该流并释放与之关联的所有系统资源
  • void mark(int readAheadLimit)
    标记流中的当前位置
  • boolean markSupported()
    判断此流是否支持 mark() 操作(它一定支持)
  • int read()
    读取单个字符
  • int read(char[] b, int off, int len)
    将字符读入数组的某一部分
  • boolean ready()
    判断此流是否已准备好被读取
  • void reset()
    将该流重置为最新的标记,如果从未标记过,则将其重置到开头
  • long skip(long n)
    跳过字符

那么,现在,本人来展示下这些API的使用:

package edu.youzg.about_io.about_file.core.Test;

import java.io.*;

public class Test {

    public static void main(String[] args) throws IOException{
        char[] chars = "右转哥666".toCharArray();
        CharArrayReader reader = new CharArrayReader(chars);

        for (int i = 0; i < chars.length; i++) {
            int read = reader.read();
            System.out.println((char) read);
        }
        reader.close();
    }

}



现在,本人来讲解下 操作字符串 的 StringWriter类 和 StringReader类:

StringWriter类:

首先,本人来讲解下这个类的 构造方法:

构造方法:

  • StringWriter()
    使用默认初始字符串缓冲区大小创建一个新字符串 writer
  • StringWriter(int initialSize)
    使用指定初始字符串缓冲区大小创建一个新字符串 writer

现在,本人来讲解下这个类的常用API

常用API

  • StringWriter append(char c)
    将指定字符添加到此 writer
  • StringWriter append(CharSequence csq)
    将指定的字符序列添加到此 writer
  • StringWriter append(CharSequence csq, int start, int end)
    将指定字符序列的子序列添加到此 writer
  • void close()
    关闭 StringWriter 无效
  • void flush()
    刷新该流的缓冲
  • StringBuffer getBuffer()
    返回该字符串缓冲区本身
  • String toString()
    以字符串的形式返回该缓冲区的当前值
  • void write(char[] cbuf, int off, int len)
    写入字符数组的某一部分
  • void write(int c)
    写入单个字符
  • void write(String str)
    写入一个字符串
  • void write(String str, int off, int len)
    写入字符串的某一部分

现在,本人来展示下这些API 的使用:

package edu.youzg.about_io.about_file.core.Test;

import java.io.*;

public class Test {

    public static void main(String[] args) throws IOException{
        StringWriter stringWriter = new StringWriter();
        stringWriter.write("magical coder ");
        stringWriter.append("is not me");
        String s = stringWriter.toString();
        System.out.println(s);

        stringWriter.close();
    }

}

现在,本人来展示下运行结果:

StringReader类:

首先,本人来展示下这个类的构造方法

构造方法:

  • StringReader(String s)
    创建一个新字符串 reader

本人来展示下这个类的常用API

常用API:

  • void close()
    关闭该流并释放与之关联的所有系统资源
  • void mark(int readAheadLimit)
    标记流中的当前位置
  • boolean markSupported()
    判断此流是否支持 mark() 操作以及支持哪一项操作
  • int read()
    读取单个字符
  • int read(char[] cbuf, int off, int len)
    将字符读入数组的某一部分
  • boolean ready()
    判断此流是否已经准备好用于读取
  • void reset()
    将该流重置为最新的标记,如果从未标记过,则将其重置到该字符串的开头
  • long skip(long ns)
    跳过流中指定数量的字符

现在,本人来展示下部分API的使用:

package edu.youzg.about_io.about_file.core.Test;

import java.io.*;
import java.nio.charset.Charset;

public class Test {

    public static void main(String[] args) throws IOException{
        StringReader reader = new StringReader("magical coder is not me");
        char[] chars = new char[10];
        int len = 0;

        while ((len = reader.read(chars)) != -1) {
            System.out.println(chars);
        }

        reader.close();
    }

}

现在,本人来展示下运行结果:

(本人《详解 内存操作流》博文链接:https://www.cnblogs.com/codderYouzg/p/12418617.html
(本人 I/O流总集篇 博文链接:https:////www.cnblogs.com/codderYouzg/p/12418404.html

原文地址:https://www.cnblogs.com/codderYouzg/p/12418647.html

时间: 2024-10-24 01:48:27

详解 字符内存操作流的相关文章

详解 内存操作流

目录 内存操作流: 字节内存操作流: 字符内存操作流: (请观看本人博文--<详解 I/O流>) 内存操作流 与之前所讲的几个流有很大的差别 容本人在这里卖个关子,相信同学们在之后的讲解中就会明白本人为何说初此话了. 那么,话不多说,开始本篇博文主题的讲解吧: 内存操作流: 概念: 此流之所以被叫做内存操作流的原因是: 此流是在内存中建立缓冲区以实现数据操作的流 正因为此原因,close()方法是无效的. 而且此流并没有将数据存入硬盘中,而是存入了内存中的一个缓冲区(即:数组)中 那么,现在,

Redis数据库操作、持久化详解及内存管理基础概览

Redis数据库操作.持久化详解及内存管理基础概览 前言 ? 上篇主要介绍了redis的编译安装流程以及redis常用的两个命令工具,本文主要讲述redis的数据库相关操作:增删改查等等,以及简述理解redis持久化原理和配置操作. Redis数据库操作 Redis 数据库常用命令(一般大小写均可)--比较简单,直接介绍语法,自行尝试验证当然这些只是冰山一角,例如不同的数据类型对应的操作都不一样,有研究兴趣的可以深入了解.单个数据库命令: set--写入数据 语法:set key value g

JAVA的IO操作:内存操作流

掌握内存操作流 输入和输出都是从文件中来的,当然,也可将输出的位置设置在内存上,这就需要ByteArrayInputStream和ByteArrayOutputStream ByteArrayInputStream:将内容写入到内存中, ByteArrayOutputStream:将内存中数据输出 此时的操作应该以内存为操作点. 利用此类 完成一些功能. 常用方法 ByteArrayInputStream :是InputStream子类. public class ByteArrayInputS

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

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

java 21-11 数据输入、输出流和内存操作流

IO数据流: 可以读写基本数据类型的数据 数据输入流:DataInputStream DataInputStream(InputStream in)   数据输出流:DataOutputStream  DataOutputStream(OutputStream out) 本来想自己写例子,后来看到博友写的全面..果断转载! java io系列15之 DataOutputStream(数据输出流)的认知.源码和示例 java io系列14之 DataInputStream(数据输入流)的认知.源码

Java基础系列10:内存操作流,管道流,合并流,压缩流以及回退流

前言:这篇文章将对几个"非主流"的IO流进行简单的介绍 一 内存操作流 内存操作流的主要作用是完成内存的输入和输出.比如说在某些情况下需要生成一些临时信息,而将这些临时信息保存在文件中不仅要进行文件的读写而且在功能完成之后还需要删除这个临时文件,因此比较麻烦,这时或许就需要用到内存操作流了. 需要用到的API是:ByteArrayInputStream和ByteArrayOutputStream,分别表示输入流和输出流,示例代码如下: package javase.io; import

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基础知识回顾之javaIO类--内存操作流ByteArrayInputStream和ByteArrayOutputSteam(操作字节数组)

直接看代码: package cn.itcast.io.p6.bytestream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; public class ByteArrayStreamDemo { /** * @param args * @throws IOException * 特点 * 1.内存操作流 * 2.不操作底层资源,不调

一、javaSE (二十二)登录注册IO版本案例、数据操作流、内存操作流、打印流、标准输入输出流、随机访问流、合并流、序列化流、Properties、NIO

1:登录注册Io版本案例(掌握) 要求,对着写一遍 cn.itcast.pojo User cn.itcast.dao UserDao cn.itcast.dao.impl UserDaoImp1(实现我不管) cn.itcast.game GuessNumber cn.itcast.test UserTest 2:数据操作流(操作基本类型数据的流)(理解) (1)可以操作基本类型的数据 (2)流对象名称 DataInputStream DataOutputStream 3:内存操作流(理解)