1.标准输入
System.in作为InputStream类的对象实现标准输入,可以调用它的read方法来读取键盘数据。read方法见如下表格:
abstract int | read() |
int | read(byte[] b) |
int | read(byte[] b, int off, int len) |
第三个read方法参数说明:
b - 读入数据的缓冲区。
off - 数组 b 中将写入数据的初始偏移量。
len - 要读取的最大字节数。
备注:
如果输入流结束,返回-1。
发生I/O错时,会抛出IOException异常
2.标准输出
System.out作为PrintStream打印流类的的对象实现标准输出,可以调用它的print、println或write方法来输出各种类型的数据。
print和println的参数完全一样,不同之处在于println输出后换行而print不换行。
write方法用来输出字节数组,在输出时不换行
在其祖先OutputStream类有如下方法
void | close() |
void | flush() |
void | write(byte[] b) |
void | write(byte[] b, int off, int len) |
abstract void | write(int b) |
其中对于write(byte[] b, int off, int len)方法参数说明:
b - 数据。
off - 数据中的初始偏移量。
len - 要写入的字节数。
然而在PrintStream中重写了write方法
void | write(byte[] buf, int off, int len) |
其对于重写后write方法参数的说明:
buf - byte 数组
off - 相对于开始写入字节处的偏移量
len - 要写入的字节数
3.案例操作
案例说明:从myeclipse或者eclipse控制台输入数据,通过标准的输入读取,然后再通过标准的输出进行写出.
1.代码实现
[java] view plaincopyprint?
-
import java.io.IOException;
-
import java.io.InputStream;
-
import java.io.OutputStream;
-
-
public class Demo {
-
-
public static void main(String[] args) {
-
-
InputStream is = System.in;// 标准的输入流对象 --读取操作
-
OutputStream os = System.out;// 标准的输出流对象---写的操作
-
try {
-
byte[] buffer = new byte[10]; // 缓冲区 // 0 1 2 3 4 5 6 7 8 9
-
int len = 0;// 读取之后的实际长度 //在UTF8编码下,回车\r 换行\n 也各占1个字节
-
/*
-
* read方法参数: b - 读入数据的缓冲区。 off - 数组 b 中将写入数据的初始偏移量。 len - 要读取的最大字节数。
-
*/
-
while ((len = is.read(buffer, 0, 4)) != -1) { //读取操作
-
System.out.println("读取的实际长度--------------------------" + len);
-
os.write(buffer, 0, 4); //写出的操作
-
System.out.println("--------------------------");
-
}
-
} catch (IOException e) {
-
// TODO Auto-generated catch block
-
e.printStackTrace();
-
}
-
}
-
-
}