1.Scanner
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
基本语法:
Scanner scanner = new Scanner(System.in);
scanner.next(); //获取输入的数据方式一
scanner.nextLine();//获取输入的数据方式二
next() 与 nextLine() 区别
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
2.IOStream
1.InputStream、OutputStream
处理字节流的抽象类
InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等.
OutputStream是字节输出流的所有类的超类,一般我们使用它的子类,如FileOutputStream等
2.InputStreamReader OutputStreamWriter
处理字符流的抽象类
InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流.
OutputStreamWriter是字符流通向字节流的桥梁,它将字符流转换为字节流.
3.BufferedReader BufferedWriter
BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,readLine读取一个文本行,
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
BufferedWriter 由Writer 类扩展而来,提供通用的缓冲方式文本写入, newLine使用平台自己的行分隔符,
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
InputStream能从來源处读取一個一個byte,
所以它是最低级的,
InputStreamReader
InputStreamReader封裝了InputStream在里头,
它以较高级的方式,一次读取一个一个字符,
BufferedReader
BufferedReader则是比InputStreamReader更高级,
它封裝了StreamReader类,一次读取取一行的字符
3.创建目录与文件
//指定路径
String filePath="D:/temp";
File dir = new File(filePath);
if (!dir.exists()){
//判断是否该目录是否已经存在
dir.mkdirs();//创建
}
//指定文件名
File file = new File(filePath + "/input.txt");
if (!file.exists()){
//判断该txt文件是否存在
file.createNewFile();//创建
}
4.文件写入FileWriter
FileWriter writer = null;
writer = new FileWriter(file, true); //true设置
InputStreamReader inputStreamReader = new InputStreamReader(System.in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
System.out.println("姓名:");
String name =bufferedReader.readLine();
System.out.println("电话:");
String phone =bufferedReader.readLine();
writer.append(name+",");
writer.append(phone+"\r\n");
FileWriter(File file)
在给出 File 对象的情况下构造一个 FileWriter 对象。
FileWriter(File file, boolean append)
参数:
file:要写入数据的 File 对象。
append:如果 append 参数为 true,则将字节写入文件末尾处,相当于追加信息。如果 append 参数为 false, 则写入文件开始处。
5.正则匹配机制
System.out.println("请输入要查找的联系人姓名:");
Scanner scanner = new Scanner(System.in);
String name = scanner.next();
FileReader fileReader = new FileReader("d:/temp/input.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line=null;
while ((line = bufferedReader.readLine()) != null) {
Pattern compile = Pattern.compile(name);
Matcher matcher = compile.matcher(line);
boolean matches = matcher.find();
if (matches==true){
System.out.println(line);
break;
}
}
matches:整个匹配,只有bai整个字符序列完全匹du配成功,才返回zhiTrue,否则返回False。但如果前部分匹配成功,将移动下次匹dao配的位置。
lookingAt:部分匹配,总是从第一个字符进行匹配,匹配成功了不再继续匹配,匹配失败了,也不继续匹配。
find:部分匹配,从当前位置开始匹配,找到一个匹配的子串,将移动下次匹配的位置。 适用于对文件进行模糊查询。