1、IO流最常见的8个对象
FileReader ; FileWriter ; FileInputStream ; FileOutPutStream ;
BufferedReader ; BufferedWriter ; BufferedInpuSteam; BufferedOutPutStream;
2、 键盘录入
//键盘本身就是一个标准的输入设备;对于Java而言这种输入设备都有相应的对象
InputStream in=System.in;
int ch=in.read(); //阻塞式方法
System.out.println(ch);
3、事例
//获取用户键盘录入的数据,并将数据变成大写显示在控制台上
//如果用户输入的是over,结束键盘录入
/**
* 思路:
* 1.因为键盘录入只需要一个字节,要判断是否是over,需要将读取到的字节拼成字符串,需要一个容器StringBuilder。
*
* 2.在用户回车之前需要将录入的数据变成字符串进行判断即可。
*/
//1、创建键盘录入容器
StringBuilder sb=new StringBuilder();
//2、获取键盘输入流对象
InputStream in=System.in;
//3、定义变量记录读取到的自己,并循环获取
int ch=0;
while((ch=in.read())!=-1){ //说白了就是让输入流一只处于阻塞状态,直到满足"over"条件,直接break。
if(ch=='\r')
continue;
if(ch=='\n'){ //判断是否是换行符,若是的话就进行判断"over",并清空sb;若不是的话就添加append。
String temp=sb.toString();
if("over".equals(temp))
break;
System.out.print(temp.toUpperCase());
sb.delete(0, sb.length());
}
else
sb.append((char)ch);
}
4、InputStreamReader 对象:
是字符流Reader子类对象,它的作用就是在字节和字符中间搭建桥梁,就是转换流。
5、转换流需求演示
// 1、需求:将键盘录入的数据写入到另一个文件中
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in)); //输入:从键盘获取输入。字符流,转换流,字节流。
BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("demo.txt"))); //输出:到指定文件中。字符流,转换流,字节流。
String line=null;
while((line=bufr.readLine())!=null){
if("over".equals(line)){
break;
}
bufw.write(line.toUpperCase());
}
//2、需求:将一个文件内容显示在控制台上
BufferedReader bufr=new BufferedReader(new InputStreamReader(new FileInputStream("demo.txt"))); //输入:从文件获取数据。字符流,转换流,字节流。
BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out)); //输出:控制台输出。字符流,转换流,字节流。
String line=null;
while((line=bufr.readLine())!=null){
if("over".equals(line)){
break;
}
bufw.write(line.toUpperCase());
}
//3、需求:将一个文件中的内容复制到另一个文件中
BufferedReader bufr=new BufferedReader(new InputStreamReader(new FileInputStream("demo.txt")));
BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("demo2.txt")));
String line=null;
while((line=bufr.readLine())!=null){
if("over".equals(line)){
break;
}
bufw.write(line.toUpperCase());
}
|