File类的使用
File类的实例化
-
java.io.File
类:文件和文件目录路径的抽象表示形式,与平台无关
- File 能新建、删除、重命名文件和目录,但File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
- 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
- File对象可以作为参数传递给流的构造器
import org.junit.Test;
import java.io.File;
/**
* File类的使用
*
* 1. File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)
* 2. File类声明在java.io包下
*
*/
public class FileTest {
/**
* 1.如何创建file类的实例
* File(String filePath):以filePath为路径创建File对象,可以是绝对路径或者相对路径
* File(String parentPath,String childPath):以parentPath为父路径,childPath为子路径创建File对象。
* File(File parentFile,String childPath):根据一个父File对象和子文件路径创建File对象
* 2.
* 相对路径:相较于某个路径下,指明的路径。
* 绝对路径:包含盘符在内的文件或文件目录的路径
*
* 3.路径分隔符
* windows:\\
* unix:/
* 4.Java程序支持跨平台运行,因此路径分隔符要慎用。
*
* 5.为了解决这个隐患,File类提供了一个常量:
* public static final String separator。
* 根据操作系统,动态的提供分隔符。
*
* File file1= new File("d:\\Work\\info.txt");
* File file2= new File("d:"+ File.separator+ "Work"+ File.separator+ "info.txt");
* File file3= new File("d:/Work");
*
*/
@Test
public void test(){
//构造器1:
File file1 = new File("hello.txt");//相对于当前module
File file2 = new File("F:\\java\\Work2\\JavaSenior\\day08\\num.txt");
System.out.println(file1); //hello.txt
System.out.println(file2); //F:\java\Work2\JavaSenior\day08\num.txt
//构造器2:
File file3 = new File("D:\\workspace_idea1","JavaSenior");
System.out.println(file3); //D:\workspace_idea1\JavaSenior
//构造器3:
File file4 = new File(file3,"hi.txt");
System.out.println(file4); //D:\workspace_idea1\JavaSenior\hi.txt
}
}
File类的常用方法
import org.junit.Test;
import java.io.File;
import java.util.Date;
/**
* File类的使用
*
* 1. File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)
* 2. File类声明在java.io包下
*/
public class FileTest {
/**
* public String getAbsolutePath():获取绝对路径
* public String getPath() :获取路径
* public String getName() :获取名称
* public String getParent():获取上层文件目录路径。若无,返回null
* public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
* public long lastModified() :获取最后一次的修改时间,毫秒值
*
* 如下的两个方法适用于文件目录:
* public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
* public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组
*/
@Test
public void test2(){
File file = new File("Hello.txt"); //此路径不存在
File file2 = new File("E:\\code\\java\\first\\day3\\src\\test\\hello1.txt"); //存在一个空文件
System.out.println(file.getAbsolutePath());//E:\code\java\first\day3\Hello.txt
System.out.println(file.getPath()); //Hello.txt
System.out.println(file.getName()); //Hello.txt
System.out.println(file.getParent()); //null
System.out.println(file.length()); //0
System.out.println(file.lastModified()); //0
System.out.println(new Date(file.lastModified())); //Thu Jan 01 08:00:00 CST 1970
System.out.println();
System.out.println(file2.getAbsolutePath()); //E:\code\java\first\day3\src\test\hello1.txt
System.out.println(file2.getPath()); //E:\code\java\first\day3\src\test\hello1.txt
System.out.println(file2.getName()); //hello1.txt
System.out.println(file2.getParent()); //E:\code\java\first\day3\src\test
System.out.println(file2.length()); //0
System.out.println(file2.lastModified()); //1643424633719
}
@Test
public void test3(){
//文件需存在!!!,不然 java.lang.NullPointerException
File file = new File("E:\\code\\java\\first");
String[] list = file.list();
for(String s : list){
System.out.println(s);
}
System.out.println();
File[] files = file.listFiles();
for(File f : files){
System.out.println(f); //相当于调用toString方法
}
}
/**
* File类的重命名功能
*
* public boolean renameTo(File dest):把文件重命名为指定的文件路径
* 比如:file1.renameTo(file2)为例:
* 要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在。
*/
@Test
public void test4(){
File file1 = new File("hello.txt");
File file2 = new File("D:\\book\\num.txt");
boolean renameTo = file2.renameTo(file1);
System.out.println(renameTo);
}
}