1.输入和输出流
程序对应的基本输入为键盘输入,基本输出为显示器输出。Java中,System类的in和out两个成员代表了基本输入输出的抽象
-
System.in:
-
System.in是InputStream, 标准输入流, 默认可以从键盘输入读取字节数据
-
注意:System.in流是无需关闭的
-
案例:
package system;
import java.io.BufferedInputStream;
import java.io.IOException;
public class SystemInTest {
public static void main(String[] args) {
BufferedInputStream bis=null;
System.out.println("输入:");
try{
//创建BufferedInputStream对象,传入的参数是System.in的InputStream(接受键盘输入的数据)
//System.in无需关闭
bis = new BufferedInputStream(System.in);
byte[] buffer = new byte[200];
int len;
while ((len=bis.read(buffer))!=-1){
String s=new String(buffer,0,len);
System.out.println(s);
}
}catch (IOException e){
e.printStackTrace();
}finally {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
System.out:
-
System.out是PrintStream, 标准输出流, 默认可以向Console中输出字符和字节数据
-
PrintStream继承了OutputStream
案例 :
package system;
import writer_and_reader.IOUtills;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
public class SystemOutTest {
public static void main(String[] args) {
BufferedOutputStream bos=null;
try{
//创建BufferedOutputStream对象
//传入的参数为System。out是PrintStream,输出控制套字符和字母
bos =new BufferedOutputStream(System.out);
bos.write("abcd".getBytes());
bos.flush();
}catch (IOException e){
e.printStackTrace();
}finally {
IOUtills.close(bos);
}
}
}
2.Scanner类
-
Scanner类位于java.util包中,不在java.io包中,不属于IO流
-
Scanner是一个工具类,主要目标是简化文本的扫描,最常使用此类获取控制台输入,Scanner获取控制台输入的步骤:
-
使用控制台输入创建Scanner对象
-
Scanner scanner=new Scanner(System.in);
调用Scanner中的nextXXX方法,获得需要的数据类型
例如:next、 nextLine、nextInt、nextByte等
package system;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入数据:");
while(true){
String next=scanner.next();
if("exit".equals(next)){
System.out.println("再见");
break;
}
System.out.println("您输入的数据:"+next);
}
}
}