※ 目的地
两个流的目的地是控制台eclipse中console控制台。
※ java.lang.System类
注:err错误输出,在控制台显示红色字体。
※ system.in输入流(字节),从控制台读
package com.briup.IO;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
public class SystemIn {
public static void main(String[] args) {
//第一申明用的流
InputStream in=null;
//构建流
try {
in=System.in;
//使用流,调用read方法会阻塞,阻塞的目的是
//让用户在控制台输入内容,阻塞结束用户敲回车键
// int data=in.read();
// System.out.println(data);
// data=in.read();
// System.out.println(data);
// data=in.read();
// System.out.println(data);
// data=in.read();
// System.out.println(data);
// data=in.read();
// System.out.println(data);
//缓存
byte [] b=new byte[100];
//read方法没读取一个字节存储在b字节数组中
//返回值表示读取了多少个字节
//-28, -72, -83, -27, -101, -67, 10
//[-28, -72, -83, -27, -101]
// int len=in.read(b);
// System.out.println("读的长度:"+len+" 数组:"+Arrays.toString(b));
//读到的字节存储到b字节数组中
//第二个参数表示从数组那个角标放,
//第三个参数表示放的总的长度是多少
// int len=in.read(b,5,3);
// System.out.println("读的长度:"+len+" 数组:"+Arrays.toString(b));
int len=0;
//98 121 101
String str="";
while((len=in.read())!=-1){
System.out.println(len);
str+=len+"";
if(len==10){
if(str.equals("9812110110")){
break;
}
str="";
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//关闭流
try {
if(in!=null)in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
※ system.out输出流(字节),向控制台写东西
package com.briup.IO;
import java.io.IOException;
import java.io.OutputStream;
public class SystmOut {
public static void main(String[] args) {
OutputStream os=null;
try {
os=System.out;
//向控制台输出内容
//os.write(65);
byte[] b="hello world".getBytes();
//os.write(b);
//第一个参数字节数组,第二个参数表示从第几个位置
//开始输出,第三个参数表示输出的长度
os.write(b,3,2);
//强制把内容输出
os.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(os!=null)os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
※ 输入输出合用:
package com.briup.IO;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class SystmInOut {
public static void main(String[] args) {
InputStream in=null;
OutputStream out=null;
try {
in=System.in;
out=System.out;
byte [] b=new byte[1024];
int len=0;
while((len=in.read(b))!=-1){
out.write(b, 0, len);
out.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(out!=null)out.close();
if(in!=null)in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
注:代码中的system.in和system.out的连用是指把控制台输入流读取的信息,给输出流写在控制台上,不能把写在控制台上的信息作为输入流读取的信息。(控制台输入流读取信息时,控制台会处于阻塞状态,等待我们向控制台输入信息,控制台才能读取信息。)