/** * File类的使用 * 1.File类的一个对象,代表一个文件或一个目录 * 2.File类声名在java.io包下 * 3.File类中设计到关于文件或文件目录的创建,删除,重命名,修改时间,文件大小等方法, * 并未涉及到写入或读取文件内容的操作。 * 如果需要读取或写入文件内容,必须使用IO流来完成。 * 4.后续File类的uix常会作为参数传递到流的构造器当中,指明读取或写入的“终点“. */
1.File类的实例化创建
/** * 1.如何创建一个File类的实例 * File(String filePath) * File(String parentPath,String childPath) * File(file parentFile,String childPath) * 2. * 相对路径:相较于某个路劲下,指明的路径。 * 绝对路径:包含盘符在内的文件或文件目录的路径 * * 3.路径分隔符 * windows:\\ * unix:/ */
@Test
public void test1() {
//构造器1:
File file1 = new File("hello.txt");
File file2 = new File("D:\\KayProgramFiles\\javaBD\\IO\\demo2");
System.out.println(file1);
System.out.println(file2);
//构造器2:
File file3 = new File("D:\\KayProgramFiles\\javaBD\\IO\\demo2","file");
System.out.println(file3);
//构造器3:
File file4 = new File(file3,"hit.txt");
System.out.println(file4);
}
输出结果:
hello.txt
D:\KayProgramFiles\javaBD\IO\demo2
D:\KayProgramFiles\javaBD\IO\demo2\file
D:\KayProgramFiles\javaBD\IO\demo2\file\hit.txt
File类的常用方法
/** * 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 file1 = new File("hello.txt");
File file2 = new File("D:\\KayProgramFiles\\javaBD\\IO\\demo2");
System.out.println(file1.getAbsolutePath());
System.out.println(file1.getPath());
System.out.println(file1.getName());
System.out.println(file1.getParent());
System.out.println(file1.length());
System.out.println(new Date(file1.lastModified()));
System.out.println("*************************");
System.out.println(file2.getAbsolutePath());
System.out.println(file2.getPath());
System.out.println(file2.getName());
System.out.println(file2.getParent());
System.out.println(file2.length());
System.out.println(new Date(file2.lastModified()));
}
输出结果:
D:\KayProgramFiles\javaBD\IO\demo2\hello.txt
hello.txt
hello.txt
null
0
Thu Jan 01 08:00:00 CST 1970
*************************
D:\KayProgramFiles\javaBD\IO\demo2
D:\KayProgramFiles\javaBD\IO\demo2
demo2
D:\KayProgramFiles\javaBD\IO
4096
Wed Aug 24 16:09:49 CST 2022
* public String[] list():获取指定目录下的所有文件或这文件目录的名称数组
* public File[] listFiles():获取指定目录下的所有文件或者文件目录的File数组
@Test
public void test3(){
File file = new File("D:\\KayProgramFiles\\javaBD\\IO\\demo2");
String[] list = file.list();
List<String> list1 = Arrays.asList(list);
list1.stream().forEach(System.out::println);
File[] files = file.listFiles();
List<File> files1 = Arrays.asList(files);
files1.stream().forEach(System.out::println);
}
输出结果:
.gitignore
.idea
.mvn
demo2.iml
download
mvnw
mvnw.cmd
pom.xml
src
target
D:\KayProgramFiles\javaBD\IO\demo2\.gitignore
D:\KayProgramFiles\javaBD\IO\demo2\.idea
D:\KayProgramFiles\javaBD\IO\demo2\.mvn
D:\KayProgramFiles\javaBD\IO\demo2\demo2.iml
D:\KayProgramFiles\javaBD\IO\demo2\download
D:\KayProgramFiles\javaBD\IO\demo2\mvnw
D:\KayProgramFiles\javaBD\IO\demo2\mvnw.cmd
D:\KayProgramFiles\javaBD\IO\demo2\pom.xml
D:\KayProgramFiles\javaBD\IO\demo2\src
D:\KayProgramFiles\javaBD\IO\demo2\target
/** * public boolean renameTo(File dest):把文件重命名为指定的文件路径 * 比如:file1.renameTo(file2)为例: * 要想保证返回true,需要file在硬盘中存在,且file2不能在硬盘中存在 * 其实也可以用来给文件换位置 * */
@Test
public void test4(){
File file = new File("D:\\KayProgramFiles\\javaBD\\IO\\demo2\\hello.txt");
File file1 = new File("D:\\KayProgramFiles\\javaBD\\IO\\demo2\\download\\hello.txt");
boolean b = file.renameTo(file1);
System.out.println(b);
}
/** * isDirectory:是否是目录 * isFile:是否是文件 * exists:文件是否存在 * canRead:判断文件是否可读 * cnaWrite:文件是否可写 * isHidden:文件是否隐藏 */下面第一个文件是不存在,第二个文件为一个txt文件
@Test
public void test5(){
File file = new File("D:\\KayProgramFiles\\javaBD\\IO\\demo2\\hello.txt");
System.out.println(file.isDirectory());
System.out.println(file.isFile());
System.out.println(file.exists());
System.out.println(file.canRead());
System.out.println(file.canWrite());
System.out.println(file.isHidden());
System.out.println("*****************************");
File file1 = new File("D:\\KayProgramFiles\\javaBD\\IO\\demo2\\download\\hello.txt");
System.out.println(file1.isDirectory());
System.out.println(file1.isFile());
System.out.println(file1.exists());
System.out.println(file1.canRead());
System.out.println(file1.canWrite());
System.out.println(file1.isHidden());
}
输出结果:
false
false
false
false
false
false
*****************************
false
true
true
true
true
false
/** * 创建硬盘中对应的文件或文件目录 * public boolean createNewFile():创建文件。若文件存在,则不创建,返回false * public boolean mkdir():创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层 * public boolean mkdirs():创建文件目录。如果上层文件目录不存在,一并创建。 * * 删除磁盘中的文件或文件目录 * public boolean delete():删除文件或者文件夹 * 删除注意事项: * Java中的删除不走回收站 */
@Test
public void test6() throws IOException {
File file = new File("hi.txt");
if (!file.exists()){
//文件的创建
boolean newFile = file.createNewFile();
}else {
//文件的删除
boolean delete = file.delete();
}
}
@Test
public void test7(){
File file = new File("D:\\KayProgramFiles\\javaBD\\IO\\demo2\\download\\z\\k\\hello.txt");
File file1 = new File("D:\\KayProgramFiles\\javaBD\\IO\\demo2\\download\\z\\hello.txt");
boolean mkdir = file.mkdirs();
System.out.println(mkdir);
System.out.println(file1.mkdir());
}