输入字符流

来源:互联网 发布:win10升级助手windows 编辑:程序博客网 时间:2024/05/17 09:09
package cn.itcast.buffered;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.Arrays;/*输入字符流:-------| Reader 所有输入字符流的基类。 抽象类----------| FileReader 读取文件字符串的输入字符流。----------| BufferedReader   缓冲输入字符流  。 缓冲 输入字符流出现的目的是为了提高读取文件 的效率和拓展了FileReader的功能。  其实该类内部也是维护了一个字符数组记住:缓冲流都不具备读写文件的能力。BufferedReader的使用步骤:    1.找到目标文件    2 .建立数据的输入通道。 */public class Demo1 {    public static void main(String[] args) throws IOException {//       readTest1();        File file  = new File("F:\\1208project\\day21\\src\\cn\\itcast\\buffered\\Demo1.java");        //建立数据的输入通道。        FileReader fileReader = new FileReader(file);        String line =  null;        while((line = myReadLine(fileReader))!=null){            System.out.println(line);        }    }    //自己去实现readLine方法。    public static String myReadLine(FileReader fileReader) throws IOException{        //创建一个字符串缓冲类对象        StringBuilder sb = new StringBuilder();  //StringBuilder主要是用于存储读取到的数据        int content = 0 ;        while((content = fileReader.read())!=-1){            if(content=='\r'){                continue;            }else if(content=='\n'){                break;            }else{                //普通字符                sb.append((char)content);            }        }        //代表已经读取完毕了。        if(content ==-1){            return null;        }        return sb.toString();      }    public static void readTest1() throws IOException{        //找到目标文件        File file  = new File("F:\\a.txt");        //建立数据的输入通道。        FileReader fileReader = new FileReader(file);        //建立缓冲输入字符流        BufferedReader bufferedReader = new BufferedReader(fileReader);        //读取数据        /*int content = bufferedReader.read();  //读到了一个字符。 读取到的字符肯定也是从Bufferedreader内部的字符数组中获取的到。所以效率高。        System.out.println((char)content);*/        //使用BUfferedReader拓展的功能,readLine()  一次读取一行文本,如果读到了文件的末尾返回null表示。        String line =  null;        while((line = bufferedReader.readLine())!=null){ // 虽然readLine每次读取一行数据,但是但会的line是不包含\r\n的、            System.out.println(Arrays.toString("aaa".getBytes()));        }        //关闭资源        bufferedReader.close();    }}
package cn.itcast.buffered;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;/*输出字符流----------| Writer  所有输出字符流的基类,  抽象类。--------------- | FileWriter 向文件输出字符数据的输出字符流。 ----------------| BufferedWriter 缓冲输出字符流          缓冲输出字符流作用: 提高FileWriter的写数据效率与拓展FileWriter的功能。BufferedWriter内部只不过是提供了一个8192长度的字符数组作为缓冲区而已,拓展了FileWriter的功能。BufferedWriter如何使用?    1. 找到目标文件    2. 建立数据的输出通道 */public class Demo2 {    public static void main(String[] args) throws IOException {        //找到目标文件        File file = new File("F:\\a.txt");        //建立数据的输出通道        FileWriter fileWriter = new FileWriter(file,true);        //建立缓冲输出流对象        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);         //写出数据//      bufferedWriter.newLine(); //newLine() 换行。 实际上就是想文件输出\r\n.        bufferedWriter.write("\r\n");        bufferedWriter.write("前两天李克强来萝岗!!");        //关闭资源        bufferedWriter.flush();//      bufferedWriter.close();    }}
package cn.itcast.buffered;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Scanner;/*练习: 缓冲输入输出字符流用户登陆注册...*/public class Login {    static Scanner scanner = new Scanner(System.in);    public static void main(String[] args) throws IOException {        while(true){            System.out.println("请选择功能: A(注册)   B(登陆)");            String option =  scanner.next();            if("a".equalsIgnoreCase(option)){                //注册                reg();            }else if("b".equalsIgnoreCase(option)){                //登陆                login();            }else{                System.out.println("你的输入有误,请重新输入...");            }           }    }    //登陆    public static void login() throws IOException{        System.out.println("请输入用户名:");        String userName = scanner.next();        System.out.println("请 输入密码:");        String password = scanner.next();        String info = userName+" "+ password;        //读取文件的信息,查看是否有该用户的信息存在,如果存在则登陆成功。        //建立数据的输入通道        //建立缓冲输入字符流        BufferedReader bufferedReader = new BufferedReader(new FileReader("F:\\users.txt"));        String line = null;        boolean isLogin = false; // 用于记录是否登陆成功的标识, 默认是登陆失败的。        //不断的读取文件的内容        while((line = bufferedReader.readLine())!=null){            if(info.equals(line)){                isLogin = true;                break;            }        }        if(isLogin){            System.out.println("欢迎"+userName+"登陆成功...");        }else{            System.out.println("不存在该用户信息,请注册!!");        }    }    //注册    public static void reg() throws IOException{        System.out.println("请输入用户名:");        String userName = scanner.next();        System.out.println("请 输入密码:");        String password = scanner.next();        String info = userName+" "+ password;        //把用户的注册的信息写到文件上        File file = new File("F:\\users.txt");        FileWriter fileWriter = new FileWriter(file,true);        //建立缓冲输出字符流        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);        //把用户信息写出        bufferedWriter.write(info);        bufferedWriter.newLine();        //关闭资源        bufferedWriter.close();    }}
0 0
原创粉丝点击