外观
正则表达式扩展
1.正则表达式扩展
1.POSIX字符类
\p{Lower} 小写字母字符:[a-z] \p{Upper} 大写字母字符:[A-Z] \p{ASCII} 所有 ASCII:[\x00-\x7F] \p{Alpha} 字母字符:[\p{Lower}\p{Upper}] \p{Digit} 十进制数字:[0-9] \p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}] \p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[]^_`{|}~ \p{Graph} 可见字符:[\p{Alnum}\p{Punct}] \p{Print} 可打印字符:[\p{Graph}\x20] \p{Blank} 空格或制表符:[ \t] \p{Cntrl} 控制字符:[\x00-\x1F\x7F] \p{XDigit} 十六进制数字:[0-9a-fA-F] \p{Space} 空白字符:[ \t\n\x0B\f\r]
2.匹配模式
1.最大匹配(贪婪模式) \S+
2.最小匹配(勉强模式) \S+?
3.独占模式 \S++
private static void test1() {
String regex;
// 最大匹配
regex = "<div>(\\S*)</div>";
String input = "<div>hello</div><div>world</div>";
// Matcher matcher = pattern.matcher(input);
System.out.println(input.replaceAll(regex, "$1"));
// 最小匹配
regex = "<div>(\\S*?)</div>";
System.out.println(input.replaceAll(regex, "$1"));
// 独占模式
regex="\\S+b";
System.out.println("aaaab".matches(regex));
regex="\\S++b";//独占模式不会回溯
System.out.println("aaaab".matches(regex)==false);
}
3.反向引用
\w{3}\1引用一次\w
abcabc匹配
split方法
split(regex,int x)
x为结果的阈值
为-1是结果数组多一个元素,为0默认,正数表示结果数组的元素个数
Java高级-File类
1.定义
File不是文件类而是文件和目录类
2.作用
1.操作文件
2.操作目录
3.操作
目录/文件操作
1.创建目录/文件
./表示当前目录
File对象存在不代表物理文件的存在
1.mkdir()创建一级目录
2.mkdirs()创建多级目录
2.删除目录/文件
1.delete()删除当前路径的最后一级目录
2.deleteOnExit()当虚拟机正常退出时删除当前路径的最后一级目录
3.createNewFile()创建文件
4.createTempFile()创建临时文件
3.目录修改/文件
1.renameTo(new File(newPath))重命名目录
2.setXXX()设置权限
// 设置此抽象路径名所有者执行权限的一个便捷方法。
setExecutable(boolean executable)
// 设置此抽象路径名的所有者或所有用户的执行权限。
setExecutable(boolean executable, boolean ownerOnly)
// 设置此抽象路径名指定的文件或目录的最后一次修改时间。
setLastModified(long time)
// 设置此抽象路径名所有者读权限的一个便捷方法。
setReadable(boolean readable)
// 设置此抽象路径名的所有者或所有用户的读权限
setReadable(boolean readable, boolean ownerOnly)
// 标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。
setReadOnly()
// 设置此抽象路径名所有者写权限的一个便捷方法。
setWritable(boolean writable)
// 设置此抽象路径名的所有者或所有用户的写权限。
setWritable(boolean writable, boolean ownerOnly)
4.目录查找/文件
1.exists()返回当前file对象的路径的物理路径是否存在
2.getAbsolutePath()获取文件对象的物理路径
3.getFreeSpace()获取所在磁盘的空闲空间字节数
4.getTotalSpace()获取当前磁盘总空间
5.getName()获取当前文件对象路径名
6.getPath()获取路径文件对象路径
7.length()获取文件长度
8.获取路径下所有文件以String数组的形式保存list()
private static void test1() throws IOException {
String path = "./testdir";
File file = new File(path);
System.out.println(file.exists());// false
// 创建文件夹
// ./表示当前目录
// file.mkdir();
System.out.println(file.exists());// true
// 创建多级目录
path = "./testdir/testdir1";
file = new File(path);
System.out.println(file.exists());// false
// file.mkdirs();
System.out.println(file.exists());// true
// 判断目录是否存在
// file = new File("./test");
// System.out.println(file.exists());// false
// 删除目录,只能删除最后一级目录
// System.out.println(file.delete());
// System.out.println(file.exists());// false
// 修改目录,重命名
System.out.println(file.renameTo(new File("./testdir/dir")));// true
System.out.println(file.exists());// false
// 查看目录
path = "./testdir/dir";
file = new File(path);
// 1.查看路径是否存在
System.out.println(file.exists());// true
// 2.获取文件对象的物理路径
System.out.println(file.getAbsolutePath());
// 3.获取所在磁盘的空闲空间字节数
System.out.println(file.getFreeSpace());
// 4.获取当前磁盘总空间
System.out.println(file.getTotalSpace());
// 5.获取当前文件对象路径名
System.out.println(file.getName());
// 6.获取路径文件对象路径
System.out.println(file.getPath());
// 7.获取文件长度
System.out.println(file.length());
// 8.创建文件
path = "./testdir/dir/test.txt";
file = new File(path);
System.out.println(file.exists());// false
System.out.println(file.createNewFile());
System.out.println(file.exists());// true
// 9.获取路径下所有文件以String数组的形式保存
path = "./testdir/dir";
file = new File(path);
String[] list = file.list();
for (String string : list) {
System.out.println(string);
}
}
I/O流
1.定义
I/O流就是Java用来操作和传输数据的技术。(形象的把数据流比作水流,像通过某种管道运输)
2.分类
1.方向
以Java程序为基准
输入流 读入 Datasrc---->JavaProgram
输出流 写出 JavaProgram---->Datasrc
2.处理宽带
字节流
字符流
3.功能
节点流
处理流
3.四个抽象基类
输入 | 输出 | |
---|---|---|
字节流 | InputStream | OutPutStream |
字符流 | Reader | Writer |
4.流的操作
1.创建流对象
private static void test() {
try {
File file = new File("./testdir/test.txt");
InputStream inputStream = new FileInputStream(file);
// System.out.println((char)inputStream.read());
int out;
while((out = inputStream.read()) != -1) {
System.out.print((char)out);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}