----------------------
ASP.Net+Android+IOS开发、
.Net培训、期待与您交流! ----------------------
1.字节数组流
字节数组流包括:ByteArrayInputStream和ByteArrayOutputStream。
1.1 ByteArrayInputStream
ByteArrayInputStream
包含一个内部缓冲区,该缓冲区包含从流中读取的字节。
关闭ByteArrayInputStream无效,此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException。
构造器:
ByteArrayInputStream(byte[] buf):创建一个ByteArrayInputStream
,使用buf作为其缓冲区数组。
读取方法:
int read():从此输入流中读取下一个数据字节。
int read(byte[] b, int off, int len):将最多len个数据字节从此输入流读入 byte 数组。
1.2 ByteArrayOutputStream
ByteArrayOutputStream实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。
关闭ByteArrayOutputStream无效,此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException。
构造器:
ByteArrayOutputStream():创建一个新的 byte 数组输出流。
ByteArrayOutputStream(int size):创建一个新的 byte 数组输出流,它具有指定大小的缓冲区容量(以字节为单位)。
写入方法:
void write(int b):将指定的字节写入此 byte 数组输出流。
void write(byte[] b, int off, int len):将指定 byte 数组中从偏移量off开始的len个字节写入此 byte 数组输出流。
void writeTo(OutputStream out):将此 byte 数组输出流的全部内容写入到指定的输出流参数中。
public class ByteArrayDemo {
public static void main(String[] args) {
//将一个字节数组作为源传入
ByteArrayInputStream bis = new ByteArrayInputStream("你好".getBytes());
//本身可视为一个数组,无须参数
ByteArrayOutputStream bof = new ByteArrayOutputStream();
int b = 0;
while((b = bis.read()) != -1){
//将每一个字节写入
bof.write(b);
}
//将其变成字符串输出
String str = bof.toString();
System.out.println(str);
}
}
2.字符数组流
字符数组包括:CharArrayReader和CharArrayWriter。
2.1 CharArrayReader
CharArrayReader可以实现一个可用作字符输入流的字符缓冲区。
在此类上调用 close() 关闭有效。
构造器:
CharArrayReader(char[] buf):根据指定的char数组创建一个 CharArrayReader。
读取方法:
int read():读取单个字符。
int read(char[] b, int off, int len):将字符读入数组的某一部分。
2.2 CharArrayWriter
CharArrayWriter可以实现一个可用作 Writer 的字符缓冲区。缓冲区会随向流中写入数据而自动增长。
在此类上调用 close() 无效,并且在关闭该流后可以调用此类中的各个方法,而不会产生任何IOException。
构造器:
CharArrayWriter():创建一个新的 CharArrayWriter。
CharArrayWriter(int initialSize):创建一个具有指定初始大小的新 CharArrayWriter。
写入方法:
void write(int c):将一个字符写入缓冲区。
void write(char[] c, int off, int len):将字符写入缓冲区。
void write(String str, int off, int len):将字符串的某一部分写入缓冲区。
void writeTo(Writer out):将缓冲区的内容写入另一个字符流。
public class CharArrayDemo {
public static void main(String[] args) throws IOException {
//将一个字符数组作为源传入
CharArrayReader car = new CharArrayReader("你好".toCharArray());
//本身可视为一个数组,无须参数
CharArrayWriter caw = new CharArrayWriter();
int b = 0;
while((b = car.read()) != -1){
//将每一个字节写入
caw.write(b);
}
//将其变成字符串输出
String str = caw.toString();
System.out.println(str);
}
}
3.字符串流
字符串流包括:StringReader和StringWriter。
它们使用字符串作为物理节点,用于实现从字符串读取内容,或将内容写入字符串(实际上用StringBuffer充当了字符串)。
它们使用时可FileReader和FileWriter基本相似,只是在创建时传入的是字符串节点,而不是文件节点。
3.1 StringReader
StringReader是一个字符串的字符流。
在此类上调用 close() 关闭有效。
构造器:
StringReader(String s):创建一个新字符串 reader。
读取方法:
int read():读取单个字符。
int read(char[] cbuf, int off, int len):将字符读入数组的某一部分。
3.2
StringWriter
StringWriter是一个字符流,可以用其回收在字符串缓冲区中的输出来构造字符串。
关闭StringWriter无效。此类中的方法在关闭该流后仍可被调用,而不会产生任何IOException。
构造器:
StringWriter():使用默认初始字符串缓冲区大小创建一个新字符串 writer。
StringWriter(int initialSize):使用指定初始字符串缓冲区大小创建一个新字符串 writer。
写入方法:
void write(int c):写入单个字符。
void write(char[] cbuf, int off, int len):写入字符数组的某一部分。
void write(String str):写入一个字符串。
void write(String str, int off, int len):写入字符串的某一部分。
public class StringDemo {
public static void main(String[] args) {
//-------下面演示StringReader类-----
//StringReader类关闭有效
String src = "十年生死两茫茫,不思量,自难忘。\r\n"
+ "千里孤坟,无处话凄凉。\r\n"
+ "纵使相逢应不识,尘满面,鬓如霜。 \r\n";
//StringReader构造器以为不涉及操作资源,所以不会有异常
StringReader sr = new StringReader(src);
char[] buf = new char[32];
int len = 0;
try{
while((len = sr.read(buf)) != -1){
System.out.print(new String(buf, 0, len));
}
}catch(IOException e){
e.printStackTrace();
}finally{
sr.close();
}
//----------下面演示StringWriter类------
//StringWriter类关闭无效,即使关闭后调用其方法依然有效。
//创建StringWriter时,实际上以一个StringBuffer作为输出节点
StringWriter sw = new StringWriter(20);
sw.write("夜来幽梦忽还乡,小轩窗,正梳妆。\r\n");
sw.write("相顾无言,惟有泪千行。\r\n");
sw.write("料得年年断肠处,明月夜,短松冈。\r\n");
System.out.println("----------下面是sw的字符串节点里的内容--------");
//使用toString方法即可
System.out.println(sw.toString());
}
}
----------------------
ASP.Net+Android+IOS开发、
.Net培训、期待与您交流! ----------------------详细请查看:
http://edu.csdn.net