详解 字符内存操作流
Posted codderyouzg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解 字符内存操作流相关的知识,希望对你有一定的参考价值。
(请观看本人博文——《详解 内存操作流》)
@
字符内存操作流
字符内存操作流 按照功能分 ,共分为 两种:
分类:
- 操作字符数组
CharArrayWrite
CharArrayReader- 操作字符串
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)
以上是关于详解 字符内存操作流的主要内容,如果未能解决你的问题,请参考以下文章
java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段