JavaSE——IO流7:其他流
目录
一、字符内存输入输出流—StringReader与StringWriter
二、字符数组输入输出流—CharArrayReader与CharArrayWriter
三、字节数组输入输出流—ByteArrayInputStream与ByteArrayOutputStream
四、系统输入输出流—System.in与System.out
一、字符内存输入输出流—StringReader与StringWriter
private static void demo2() throws IOException {// 内存输出流StringWriter stringWriter = new StringWriter();// 向内存中写入字符串stringWriter.write("李白");stringWriter.close();
}private static void demo1() throws IOException {// 内存输入流String str = "abcdef";StringReader stringReader = new StringReader(str);// 使用内存流读取字符串int len;char[] chars = new char[3];while ((len = stringReader.read(chars)) != -1) {System.out.print(new String(chars, 0, len));}stringReader.close();// 运行结果:abcdef
}
二、字符数组输入输出流—CharArrayReader与CharArrayWriter
private static void demo3() throws IOException {// 读取内存中的字符数组CharArrayReader charArrayReader = new CharArrayReader("李四".toCharArray());// 将字符数组写入内存CharArrayWriter charArrayWriter = new CharArrayWriter();int len;char[] chars = new char[3];while ((len = charArrayReader.read(chars)) != -1) {charArrayWriter.write(chars, 0, len);}charArrayWriter.close();charArrayReader.close();
}
三、字节数组输入输出流—ByteArrayInputStream与ByteArrayOutputStream
private static void demo4() throws IOException {// 读取内存中的字节数组ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream("张三".getBytes());// 将字节数组写入内存ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();int len;byte[] bytes = new byte[2];while ((len = byteArrayInputStream.read(bytes)) != -1) {byteArrayOutputStream.write(bytes, 0, len);}byteArrayOutputStream.close();byteArrayInputStream.close();
}
四、系统输入输出流—System.in与System.out
System.out | 标准输出流 |
System.in | 标准输入流 |
System.err | 标准错误流,输出的信息全部是红色,有高并发现象 |
Scanner使用时不要关流scanner.colse();
System.in是一个静态常量,被多个Scanner共享,一个关了,其他也受影响
使用IO流从控制台获取一行数据
public class PrintDemo {public static void main(String[] args) throws IOException { // 思路:从控制台获取数据,使用System.in// IO流中BufferedReader有readLine方法,可以读取整行数据// BufferedReader创建对象时,需要字符流// 用户输入的是字节,所以还要嵌套一个转换流,将字节流转换为字符流BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));String readLine = bufferedReader.readLine();System.out.println(readLine);bufferedReader.close();}
}
运行结果: