Java基础学习笔记第二章
1. 标准输入输出流 (掌握)
标准输入流:System.in <-----> InputStream
练习:InputDemo.java
public class InputDemo { public static void main(String[] args) throws IOException { //InputStream is = System.in;//键盘输入 // 把字节流 转换为 字符流, 通过转换流完成 //InputStreamReader isr = new InputStreamReader(is); //BufferedReader 中 有一个 readLine() 可以获取一行数据 //BufferedReader br = new BufferedReader(isr); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入字符串:"); String str = br.readLine(); System.out.println(str); System.out.println("请输入数字:"); int number = Integer.valueOf( br.readLine() ); System.out.println(number); } } |
运行结果:、
标准输出流:
System.out <-----> PrintStream
输出数据的方式:
1:System.out.println("hello");
2: BufferedWriter bw = newBufferedWriter(new OutputStreamWriter(System.out));
练习:
public class OutputDemo { public static void main(String[] args) throws IOException { //System.out.println("hello"); //转换流 //OutputStreamWriter osw = new OutputStreamWriter(ps); //BufferedWriter bw = new BufferedWriter(osw); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); bw.write("hello"); bw.newLine(); bw.flush(); bw.close(); } } |
运行结果:
2.数据输入输出流 (了解)
注意:它是用来操作基本数据类型
DataInputStream : 数据输入流 -- 字节输入流
DataOutputStream : 数据输出流 -- 字节输出流
数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入
3. 内存操作流
操作字节数组:ByteArrayInputStream
此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用toByteArray() 和 toString() 获取数据。关闭 ByteArrayOutputStream 无效。
注意:此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。
操作字符数组
CharArrayReader
CharArrayWrite
操作字符串
StringReader
StringWriter
这里就演示前面两个对象了
public class IODemo { public static void main(String[] args) throws IOException { //ByteArrayOutputStream //打开文件 ByteArrayOutputStream baos = new ByteArrayOutputStream(); baos.write("hello".getBytes()); byte[] byteArray = baos.toByteArray(); baos.close();//释放资源 System.out.println(baos.toString()); //ByteArrayInputStream //ByteArrayInputStream(byte[] buf) ByteArrayInputStream bais = new ByteArrayInputStream(byteArray); byte[] buffer = new byte[1024]; int len = 0; while ((len = bais.read(buffer)) != -1) { System.out.println( new String(buffer, 0 , len) ); } } } |
运行结果: