IO流
1. IO流知识点
IO流(字符输入流FileReader) 字节输入流 FileInputStream
IO流(字符输出流FileWriter) 字节输出流 FileOutputStream
字符缓冲区输入流( BufferedReader)
字节缓冲区输入流BufferedInputStream
字符缓冲区输出流( BufferedWriter)
字节缓冲区输出流BufferedOutputStream
2. 实战案例
案例2.1 将键盘录入拷贝到当前项目下的text.txt中,键盘录入数据遇到quit时就退出
public class demo12 {
/**
* @param args
* 将键盘录入拷贝到当前项目下的text.txt中,键盘录入数据遇到quit时就退出
*
* 1.创建键盘录入对象
* 2.创建输出流对象,关联text.txt文件
* 3.定义无限循环
* 4.遇到quit退出
* 5.没有quit就将内容写出
* 6.关流
* @throws IOException
*/
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);//创建键盘录入对象
//2.创建输出流对象,关联text.txt
FileOutputStream fos = new FileOutputStream("text.txt");
//3.定义无限循环
while(true){
String nl = sc.nextLine();//将键盘录入对象写在line中
//4.遇到quit退出
if("quit".equals(nl)){
break;
}else{//5.没有quit就将内容写出
fos.write(nl.getBytes());//字符串必须转换成字节数组
fos.write("\r\n".getBytes());
}
fos.close();
}
}
}
结果:将111111.txt写入到了text文件中。。。。。。。。。。。。。。。
***案例2.2***模拟收费软件试用次数
public class test {
/**
* @param args
* 模拟试用版软件,10次机会
*
* 1.创建带缓冲的输入流对象,使用readLine方法,保证数据的原样性
* 2.将读到的字符串转换成int数;
* 3.对int数进行判断,如果大于0,将其--写回去,如果不大于0,提示请购买正版
* 4.在if判断将要--的结果打印,并将结果通过输出流写到文件上
* @throws IOException
*/
public static void main(String[] args) throws IOException{
//1.创建带缓冲的输入流对象,使用readLine方法,保证数据的原样性
BufferedReader br = new BufferedReader(new FileReader("config.txt"));
//2将读到的字符串转换成int类型
String line = br.readLine();
//将数字字符串转换成数字
int times = Integer.parseInt(line);
//3.对int数进行判断,如果大于0,将其--写回去,如果不大于0,提示请购买正版
if(times>0){
System.out.println("您还有"+times--+"次机会");
FileWriter fw = new FileWriter("config.txt");
fw.write(times+"");
fw.close();
}else{
System.out.println("已结束,请购买正版");
}
//关闭流
br.close();
}
}
案例3 IO流获取文本字符出现次数
/**
* @author
*
*1.创建带缓冲的输入流对象
*2.创建双列集合对象
*3.将读到的字符存储在双列集合中,存储的时候做判断,如果不包含这个键
* 就将键和1存储,如果包含这个键,就将键和值加1存储
*4.关闭输入流
*5.创建输出流
*6.遍历集合,将集合中的内容写到times.txt中,
*7.关闭输出流
*/
public class demo1_Wrap {
public static void main(String[] args) throws IOException{
//1.创建待缓冲的输入流对象
BufferedReader br = new BufferedReader(new FileReader("aaa.txt"));
//2.创建双列集合
TreeMap<Character, Integer> tm = new TreeMap<>();
//3.判断
int ch;
while((ch=br.read())!=-1){
//向下强转
char c = (char)ch;
/*if(!tm.containsKey(c)){//如果集合不包含,就把字符加入,计数1次
tm.put(c, 1);
}else{//如果集合已经包含该字符,则次数+1(次数通过键获取值>>>tm.get(c)+1)
tm.put(c, tm.get(c)+1);
}*/
//三元运算符表示
tm.put(c, !tm.containsKey(c)? 1 :tm.get(c)+1);
}
//4.关流
br.close();
//