1.概述
IO流就是输入/输出程序的数据流,通过IO流技术可以实现从程序中读取外部数据或者将数据从程序中输出到外部设备中。
2.java.io
输入流 输出流
字节流 InputStream OutputStream
字符流 Reader Writer
四大基本流都是抽象类,不能直接使用,在他们的基础上,派生出了很多具有具体功能的子孙流。
InputStream、OutputStream:System.in
System.outSystem.err
package com.zll.io;
public class SysteErrDemo1 {
public static void main(String[] args) {
System.out.println("aaaa");
System.err.println("bbb");
}
}
System.in
**BufferedReader(new InputStreamReader(System.in))
**Scanner(System.in)package zll.material.java_base_homework;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* 系统流读取数据写出到文件中
*/
public class SystemInDemo1 {
public static void main(String[] args) {
InputStream in = System.in;
OutputStream out = null;
try{
out = new FileOutputStream("E:\\7.txt");
int i = -1;
while((i = in.read())!=-1){
out.write(i);
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(out!=null){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}finally{
out = null;
}
}
}
}
}
package com.tarena.io;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
案例:从控制台读取一行数据,转换位大写再输出
按行读取字符数据 -- BufferedReader -- 只能包装字符流
我们有的是 -- System.in -- 字节流
此处可以使用转换流 InputStreamReader
*/
public class SystemInDemo2 {
public static void main(String[] args) throws Exception {
BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while(true){
line = bufReader.readLine();
if("over~".equals(line)){
break;
} else {
line = line.toUpperCase();
System.out.println(line);
}
}
}
}
package com.tarena.io;
import java.util.Scanner;
/**
案例:从控制台读取一行数据,转换位大写再输出
使用Scanner包装System.in实现按行读取数据
*/
public class SystemInDemo3 {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
String line = null;
while(true){
line = scanner.nextLine();
if("over~".equals(line)){
break;
} else {
line = line.toUpperCase();
System.out.println(line);
}
}
}
}