https://www.bilibili.com/video/BV1Cv411372m?p=199&spm_id_from=pageDriver&vd_source=8cee89dfe67fe633aa0d8c09481a9d9f
146 日志概述‘
153 file文件
package File;
import java.io.File;
/**
* 学会创建file对象,定位操做系统的文件
*/
public class FileDemo {
public static void main(String[] args) {
//创建file对象
File f = new File("C:\\D\\EXE\\JDK\\lib\\tools.jar");
File f22 = new File("C:/D/EXE/JDK/lib/tools.jar");
File f33 = new File("C:"+File.separator+"D"+File.separator+"EXE"
+File.separator+"JDK"+File.separator+"lib"+File.separator+"tools.jar");
long size = f.length(); //文件的字节
long size2 = f22.length(); //文件的字节
long size3 = f33.length(); //文件的字节
System.out.println(size);
System.out.println(size2);
System.out.println(size3);
//相对路径,一般定位模块中的文件,相对到工程下
File f2 = new File("untitled1/src/File/pic.PNG");
System.out.println(f2.length());
//也可以是文件夹的大小
File f3 = new File("C:\\D");
System.out.println(f3.exists());
}
}
154 file类常用方法
package File;
import java.io.File;
import java.text.SimpleDateFormat;
public class FileDemo2 {
public static void main(String[] args) {
File f = new File("untitled1/src/File/pic.PNG");
System.out.println(f.getName());
System.out.println(f.length());
System.out.println(f.getAbsolutePath()); //C:\D\IdeaProjects\java-code\untitled1\src\File\pic.PNG
System.out.println(f.getPath()); //untitled1\src\File\pic.PNG
//获取文件最后修改时间
long time = f.lastModified();
System.out.println("最后的修改时间:"+new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(time));
//判断是否为文件
System.out.println(f.isFile());
System.out.println(f.isDirectory());
}
}
package File;
import java.io.File;
public class FileDemo3 {
public static void main(String[] args) {
File file = new File("C:\\D\\EXE");
String[] files = file.list();
for (String s : files) {
System.out.println(s); //输出文件的名称
}
//listFiles方法注意事项
//当调用者不存在时,返回null
//当调用者是一个文件时,返回null
//当调用者时一个空文件夹时,返回一个长度为0的数组
//当调用者是一个有内容的文件夹时,将所有文件和文件夹的路径放在数组中返回
//当包含隐藏文件时,将所有文件和文件夹的路径放在数组中返回
File f2 = new File("C:\\D\\EXE");
File[] files2 = f2.listFiles(); //只能遍历一级文件夹
for (File f : files2) {
System.out.println(f.getAbsolutePath());
}
}
}
155 递归
递归:就是方法直接或间接调用自己
递归死循环:递归方法无限调用自己,出现栈内存溢出
package File;
package File;
/**
* 体验递归,求5的阶乘 和1--n的和
*/
public class DiguiDemo {
public static void main(String[] args) {
int result =f(5);
System.out.println(result);
int res2=f2(5);
System.out.println(res2);
System.out.println(f3(1));
}
public static int f(int n){
if (n==1){
return 1;
}else{
return n*f(n-1);
}
}
public static int f2(int n){
if (n==1){
return 1;
}else{
return f2(n-1)+n;
}
}
//f(x)-f(x)/2-1=f(x+1)
public static int f3(int n){
if(n==10){
return 1;
}else{
return 2*f3(n+1)+2;
}
}
}
package File;
import java.io.File;
import java.io.IOException;
public class DiguiDemo2 {
public static void main(String[] args) throws IOException {
searchFile(new File("C:\\d"),"Code.exe");
}
/**
* 搜索某个目录下的全部文件,找到要找的文件
* @param dir 被搜索的目录
* @param fileName 被搜索的文件名称
*/
public static void searchFile(File dir, String fileName) throws IOException {
//3判断dir是否时目录
if (dir!=null&&dir.isDirectory()){
//4提取当前目录下的一级文件对象
File[] files = dir.listFiles();
//5判断是否存在一级文件对象,存在才可以遍历
if (files!=null&&files.length>0){
for (File file : files) {
//6判断是对象还是目录
if (file.isFile()){
//7判断是不是要找的,把路径输出
if (file.getName().contains(fileName)){
System.out.println("找到了"+file.getAbsolutePath());
//启动他
Runtime r = Runtime.getRuntime();
r.exec(file.getAbsolutePath());
}
}else {
//8是文件夹,继续遍历
searchFile(file,fileName);
}
}
}
}else {
System.out.println("对不起,当前搜索的不是文件夹");
}
}
}
package File;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class FileInputStreamDemo {
public static void main(String[] args) throws IOException {
//1创建一个文件字节输入管道与源文件接通
// InputStream is = new FileInputStream(new File("untitled1\\src\\File\\pic.PNG"));
//简化写法
InputStream is = new FileInputStream("untitled1\\src\\File\\pic.PNG");
// //2读取一个字节并返回,每次读一个字节,读取结束返回-1
// int b1 = is.read();
// System.out.println(b1);
// //定义一个变量记录每次读到的字符
// int b;
// while((b=is.read())!=-1){
// System.out.println((char) b);
// }
// //定义一个字符数组,用于读取字节数组
// byte[] buffer = new byte[3];
// int len = is.read(buffer);
// System.out.println("读取了几个字节"+len);
// //读取多少倒出多少
// String rs = new String(buffer,0,len);
// System.out.println(rs);
//改善使用循环,每次读一个字节数组
byte[] buffer = new byte[1024];
int len; //记录每次读取的字节数
while ((len= is.read(buffer))!=-1){
System.out.println(new String(buffer,0,len));
}
}
}
package File;
import java.io.*;
public class FileInputStreamDemo3 {
public static void main(String[] args) throws IOException {
File f = new File("C:\\d\\车位出租协议.docx");
InputStream is = new FileInputStream(f);
//定义一个数组,与文件的大小一样大
byte[] buffer = new byte[(int) f.length()];
int len = is.read(buffer);
System.out.println("读取了多少个"+len);
System.out.println("文件大小"+f.length());
System.out.println(new String(buffer));
}
}
try–catch–finally
finally,在异常处理时,提供finally模块来执行所有清除操作,比如io流的资源释放
特点:被finally控制的语句一定会被执行,除非jvm退出
152 io流
191 junit单元测试框架
其他注解
192反射
获取class对象的三种方式
193 获取类的构造器
只能拿到public的构造器
能拿到所有的构造器
194获取类的成员变量,成员方法
获取类的成员方法
195 反射的作用、应用场景
196注解
197解析注解
198动态代理
199代理的使用
重复的代码太多,使用台历简化