异常注意事项 重写
子类重写父类方法时(类实现接口也算在其内),子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏)
如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集或者是子类异常,子类不能抛出父类没有的异常
如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,必须要处理,那么子类只能try,不能throws
io (input, output) 主角两个人, 内存和磁盘
File -> 文件 目标:操作磁盘中的文件
Directory -> 文件夹(目录)
创建功能 只支持创建文件, 不支持创建文件夹
public boolean createNewFile()
file.createNewFile();
public boolean mkdir(); make directory
file.mkdir();
可以连续创建多层文件夹
public boolean mkdirs()
file.mkdirs();
删除功能
public boolean delete()
重命名功能
public boolean renameTo(File dest)
既是重命名, 也是移动, 后期, java第三阶段学习云服务器的时候, 其他的操作系统就是这样的, 没有重命名命令, 只有移动命令
移动命令既可以移动,也可以重命名
file.renameTo(file2);
delete方法只能删除空文件夹, 或者是文件
File file = new File("D:\\java27\\2024-08-14\\代码\\javaio\\mp3");
boolean result = file.delete();
System.out.println("result = " + result);
file常用方法
判断功能
File file = new File("vip.txt");
System.out.println("file.isDirectory() = " + file.isDirectory());
System.out.println("file.isFile() = " + file.isFile());
System.out.println("file.exists() = " + file.exists());
System.out.println("file.canRead() = " + file.canRead());
System.out.println("file.canWrite() = " + file.canWrite());
System.out.println("file.isHidden() = " + file.isHidden());
File file = new File("vip.txt");
//基本获取功能
//public String getAbsolutePath()
System.out.println("file.getAbsolutePath() = " + file.getAbsolutePath());
//public String getPath() file构造器中输入的是什么, 就打印什么
System.out.println("file.getPath() = " + file.getPath());
//public String getName()
System.out.println("file.getName() = " + file.getName());
//public long length()
System.out.println("file.length() = " + file.length());
//public long lastModified()
System.out.println("file.lastModified() = " + file.lastModified());
Date date = new Date(file.lastModified());
System.out.println("date = " + date);
判断文件后缀
public static void main(String[] args) {
File file = new File("mp3");
//里面有一个方法等待我们重写, 这个代码的作用
FilenameFilter filenameFilter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if (name.endsWith(".jpg")){
return true;
} else {
return false;
}
}
};
//MyNameFilter filenameFilter = new MyNameFilter();
String[] subFileNames = file.list(filenameFilter);
System.out.println(Arrays.toString(subFileNames));
}
递归删除文件夹
class Demo23 {
public static void main(String[] args) {
File file = new File("mp3");
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
files[i].delete();
}
file.delete();
}
}
高级获取功能 文件夹独有, 获取文件夹下的子文件(包含子文件夹), 注意: 不包含, 子子文件
File file = new File("mp3");
//获取文件夹下的子文件名称, 组成一个数组
String[] subFileNames = file.list();
System.out.println(Arrays.toString(subFileNames));
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
File fileNow = files[i];
System.out.println("fileNow.getName() = " + fileNow.getName());
}
递归删除文件夹
public class Demo30 {
public static void main(String[] args) {
deleteFile(new File("mp3"));
}
//将目标文件夹/删除文件 递归删除
public static void deleteFile(File dstFile){
//1. 如果是文件, 直接删除走人
if (dstFile.isFile()) {
System.out.println("当前是文件, 删除文件 -> " + dstFile.getName());
dstFile.delete();
return;
}
//2. 如果是文件夹
File[] files = dstFile.listFiles();
System.out.println("当前是文件夹, 正在遍历文件夹, 获取子文件并挨个删除");
// 2.1 调用文件夹的listFile方法 并 遍历
for (int i = 0; i < files.length; i++) {
File fileNow = files[i];
System.out.println("正在进入文件夹中, 删除其子文件 -> " + fileNow.getName());
// 2.2 如果遍历到的file是文件, 则直接删除
if (fileNow.isFile()) {
fileNow.delete();
System.out.println("成功删除子文件 -> " + fileNow.getName());
} else {
deleteFile(fileNow);
System.out.println("成功删除子文件夹 -> " + fileNow.getName());
}
// 2.3 如果遍历到的是文件夹, 继续调用本方法
}
// 2.4 删除掉最上层的这个文件夹
dstFile.delete();
System.out.println("当前文件夹内容已被清空, 删除这个空文件夹 -> " + dstFile.getName());
}
}
io流涉及到两个区域, 磁盘和内存
目标向vip.txt中写入数据
FileOutputStream fos = new FileOutputStream("vip.txt", false);
String name = "伟哥";
byte[] bytes = name.getBytes();
fos.write(bytes);
fos.write(98);
//表示只从数组的第3位开始向下, 取3个字节, 写入到磁盘文件中 比较鸡肋
fos.write(bytes, 3, 3);
从vip.txt中读取出来数据
FileInputStream fis = new FileInputStream("vip.txt");
byte[] bytes = new byte[9];
fis.read(bytes);
String vipName = new String(bytes);
System.out.println("vipName = " + vipName);
1108

被折叠的 条评论
为什么被折叠?



