B站视频指路:尚硅谷Java入门视频教程(在线答疑+Java面试真题)_哔哩哔哩_bilibili
写在前面:马上秋招,开个知识点记录贴,就当做课堂笔记吧.
File类:
·java.io.File : 文件和文件目录路径的抽象表示形式 与平台无关
·File能新建、删除、重命名文件和目录,但File不能访问文件内容本身.
若需访问文件内容本身 则需要使用输入/输出流
·想要在Java程序中表示一个真实存在的文件或目录 那么必须有一个File对象,但是Java程序
中的一个File对象,可能没有一个真实存在的文件或目录
·File对象可以作为参数传递给流的构造器
File类的使用
1.File类的一个对象 代表一个文件或一个文件目录(俗称:文件夹)
2.File类声明在java.io包下
3.File类中涉及到的常用方法都是文件或文件目录的创建删除等 并未涉及到写入或读取文件
内容的操作 若需读写文件内容 必须使用IO流来完成
4.后续File类的对象常会作为参数传递到流的构造器中 指明读取或写入的"终点"
如何创建File类的实例:
1.构造器①:pubic File(String pathname)
绝对路径:包含盘符在内的文件或文件目录的路径
File file = new File("xxx.txt")//相当于当前module
相对路径:相较于某个路径下,指明的路径
File file = new File("D:\\xxxx\\xxxx\\xxxx\\xxx.txt")
2.构造器②:pubic File(String parent,String child)
3.构造器③:pubic File(File parent,String child)tips:路径分隔符
如下三种方式都可以表示路径
File类的使用:常用方法
File类的获取功能: 后两个适用于目录
import org.junit.Test; import java.io.File; import java.util.Date; public class FileTest { @Test public void test(){ File file1 = new File("k:/IO/zk.txt"); System.out.println(file1.getAbsoluteFile());//获取绝对路径 System.out.println(file1.getPath());//获取路径 System.out.println(file1.getName());//获取名称 System.out.println(file1.getParent());//获取上层文件目录路径 若无 返回null System.out.println(file1.length());//获取文件长度(即:字节数) 不能获取目录的长度 System.out.println(file1.lastModified());//获得最后一次的修改时间 毫秒值 System.out.println("****************"); File file2 = new File("zk.txt"); System.out.println(file2.getAbsoluteFile());//获取绝对路径 System.out.println(file2.getPath());//获取路径 System.out.println(file2.getName());//获取名称 System.out.println(file2.getParent());//获取上层文件目录路径 若无 返回null System.out.println(file2.length());//获取文件长度(即:字节数) 不能获取目录的长度 System.out.println(file2.lastModified());//获得最后一次的修改时间 毫秒值 } }
import org.junit.Test; import java.io.File; import java.util.Date; public class FileTest { @Test public void test(){ File file1 = new File("k:/Tencent"); String[] list = file1.list(); for (String s:list ) { System.out.println(s); } System.out.println("****************"); File[] file2 = file1.listFiles(); for (File f:file2 ) { System.out.println(f); } } }
File类的重命名功能:
比如:file1.renameTo(file2)
要想保证返回true,需要file1在硬盘中是存在的 且file2不存在public class FileTest { @Test public void test(){ File file1 = new File("k:/IO/zk2.txt"); File file2 = new File("k:/IO/zk23.txt"); boolean renameTo = file1.renameTo(file2); System.out.println(renameTo); } }
File类的判断功能:
import org.junit.Test; import java.io.File; import java.util.Date; public class FileTest { @Test public void test(){ File file = new File("k:/IO/zk23.txt"); System.out.println(file.isFile());//判断是否是文件 System.out.println(file.isDirectory());//判断是否是文件目录 System.out.println(file.exists());//判断是否存在 System.out.println(file.canRead());//判断是否可读 System.out.println(file.isHidden());//判断是否隐藏 System.out.println(file.canWrite());//判断是否可写 } }
File类的创建和删除功能:
创建硬盘中对应的文件或文件目录
删除硬盘中的文件或文件目录import org.junit.Test; import java.io.File; import java.io.IOException; import java.util.Date; public class FileTest { @Test public void test() throws IOException { File file = new File("k:/IO/zk.txt"); if(!file.exists()){ //文件的创建 file.createNewFile(); System.out.println("yes!"); }else { //文件的删除 file.delete(); System.out.println("删除成功!"); } } @Test public void test2() throws IOException { File file1 = new File("k:/IO/IO1/IO2"); boolean mkdir = file1.mkdir(); if(mkdir){ System.out.println("yes"); } File file2 = new File("k:/IO/IO1/IO3"); boolean mkdir2 = file2.mkdirs(); if(mkdir2){ System.out.println("yes222"); } } }
练习:
1.
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class FileTest {
@Test
public void test() throws IOException {
File file = new File("k:/IO/sad.txt");
//创建一个与file同目录的另外一个文件 文件名为 haha.txt
File destFile = new File(file.getParent(),"haha.txt");
boolean newFile = destFile.createNewFile();
if (newFile){
System.out.println("yes");
}
if(destFile.exists()){
destFile.delete();
}
}
}
new File是创建对象 createNewFile是创建实体对象
2.
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class FileTest {
@Test
public void test() throws IOException {
File file = new File("k:/IO");
File[] files = file.listFiles();
for (File f:files
) {
if(f.toString().endsWith(".jpg")){
System.out.println(f);
}
}
}
}
String类的endwith()方法
3.
import java.io.File;
public class FileTest {
public static void main(String[] args) {
FileTest fff = new FileTest();
File file = new File("k:/IO");
fff.print(file);
System.out.println(fff.setSizeizeeeee(file));
}
private void print(File file) {
File[] files = file.listFiles();
for (File f:files
) {
if(f.isDirectory()){
print(f);
}else{
System.out.println(f.getAbsoluteFile());
}
}
}
public void deleteeee(File f){
//如果f是文件 直接 delete
//如果是目录 先删掉它的下一级 再删自己
if (f.isDirectory()){
File[] all = f.listFiles();
for(File ff:all){
deleteeee(ff);
}
f.delete();
}
}
public long setSizeizeeeee(File f){
long size = 0;
if(f.isFile()){
size+=f.length();
}else{
File[]all = f.listFiles();
for(File ff:all){
size+=setSizeizeeeee(ff);
}
}
return size;
}
}
练习:
1.创建一个与a.txt文件同目录下的另外一个文件b.txt
File file1 = new File("k:/IO/a.txt");
File file2 = new File(file1.getParent(),"b.txt");