目录
1. File文件操作类
1.1File类的基本使用
1.2 目录操作
1.3 文件信息
1.4 综合案例
2.Path类
在Java.io包之中,File类是唯一一个与文件本身操作(创建、删除、取得信息...)有关,与文件内容无关的程序类。
//绝对路径
public File(String pathname) ;
//重载,设置父路径和子路径
public File(String parent, String child)
public boolean createNewFile() throws IOException
public boolean exists()
public boolean delete()
代码示例:
package com.qqycc;
import java.io.File;
import java.io.IOException;
/**
* Author: qqy
*/
public class Test1 {
public static void main(String[] args) {
//取得File对象
//把E:\\help.txt文件抽象成File类的实例化对象,“\\”->转义符
File file=new File("E:"+File.separator+"help.txt");
//判断文件是否存在
if (file.exists()) {
if (file.delete()){
System.out.println("文件存在,删除成功");
}else{
System.out.println("文件存在,删除失败");
}
}else{
try{
//file.createNewFile()返回值是boolean类型
//File类只是创建文件本身,但是对于其内容并不做处理
if(file.createNewFile()){
System.out.println("文件不存在,创建成功");
}else{
//空间已满、权限限制
System.out.println("文件不存在,创建失败");
}
}catch (IOException e){
System.out.println(e.getMessage());
}
}
}
}
文件路径分隔符:windows \ 、linux / 、unix / 代码跨平台,用File.separator代替具体的分隔符
路径分隔符:windows ; 、linux : 、unix : 代码跨平台,用File.pathSeparator代替具体的分隔符
文件名大小写,在windows下注意区分:windows 不区分 linux、unix 区分
HELLO.txt 和 hello.txt 在windows下,为同一个文件;在 linux、unix下,是不同的文件
public String getParent()
public File getParentFile()
//创建目录以及上级目录(如果上级目录不存在)
public boolean mkdirs()
//只创建当前目录
public boolean mkdir()
代码示例:
import java.io.File;
import java.io.IOException;
/**
* 目录操作
* Author: qqy
*/
public class Test {
public static void main(String[] args) {
File file = new File("E:" + File.separator + "a" + File.separator + "help.txt");
if (!file.exists()) {
File parentFile = file.getParentFile();
if (!parentFile.exists()) {
if (parentFile.mkdirs()) {
System.out.println("创建目录成功");
}
}
try {
if (file.createNewFile()) {
System.out.println("创建文件成功");
} else {
System.out.println("创建文件失败");
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
}
public boolean isFile()
public boolean isDirectory()
public long length()
public long lastModified()
代码示例:
import java.io.File;
import java.util.Date;
/**
* Author: qqy
*/
public class Test4 {
public static void main(String[] args) {
File file = new File("E:" + File.separator + "JAVA" + File.separator + "JavaSE");
System.out.println("文件是否是目录:"+file.isDirectory());
System.out.println("文件是否是普通文件:"+file.isFile());
//通过文件调用,不能获取目录的大小
System.out.println("文件大小:"+file.length());
System.out.println("文件最后修改时间:"+new Date(file.lastModified()));
}
}
//file是普通文件返回null,如果是目录则返回目录下的所有文件以及文件夹
File[] files=file.listFiles();
//返回路径
String[] fileName=file.list();
代码示例:
import java.io.File;
/**
* 列出目录中的全部组成
* Author: qqy
*/
public class Test5 {
public static void main(String[] args) {
File file = new File("E:" + File.separator + "JAVA" + File.separator + "JavaSE");
File[] files=file.listFiles();
String[] fileName=file.list();
//if(file.exists()&&file.isDirectory())
if(files!=null) {
for (File f : files) {
System.out.println(f.getName());
//打印文件的绝对路径
System.out.println(f.getAbsolutePath());
}
}
}
}
代码示例:
import java.io.File;
/**
* 综合案例
* Author: qqy
*/
public class Test6 {
public static void main(String[] args) {
File file = new File("E:" + File.separator + "JAVA" + File.separator + "JavaSE");
new Thread(new Runnable() {
@Override
public void run() {
findFile(file, 0);
}
}).start();
System.out.println("hello");
}
//通过递归方式遍历指定文件目录下的所有文件及子目录
public static void findFile(File file, int level) {
if (file.isFile()) {
System.out.println("|" + repeatSpace(level) + "|-" + file.getName());
} else {
System.out.println(repeatSpace(level) + "+" + file.getName());
File[] files = file.listFiles();
if (files != null) {
for (File f : files) {
findFile(f, level + 2);
}
}
}
}
public static String repeatSpace(int count) {
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= count; i++) {
sb.append(" ");
}
return sb.toString();
}
}
练习:
import java.io.File;
import java.util.Date;
/**
* Author: qqy
*/
public class Exercise {
public static void main(String[] args) {
File file = new File("E:" + File.separator + "JAVA" + File.separator + "课件");
print(file);
tree(file);
}
//1. 传入一个文件File
//2. 打印输出如下内容
//3. 每一个文件一行
//4. F|D(普通文件还是目录) name size last_modified
public static void print(File f){
if(f==null){
return;
}
System.out.println((f.isFile()?"F":"D")+" "+f.getName()+" "+f.length()+" "+new Date(f.lastModified()));
File[] files=f.listFiles();
if(files!=null){
//1.for
for(int i=0;i
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* Author: qqy
*/
public class Test {
public static void main(String[] args) {
//Path是接口,无法实例化对象,借助辅助类Paths来实现
//E:\JAVA
Path path=Paths.get("E","JAVA");
//E:\JAVA\code
Path path1=Paths.get("E","JAVA","code");
//E:
Path path2=Paths.get("E");
//将Path对象转换为File对象
File file=path.toFile();
File file1=Paths.get("E").toFile();
try {
//Files是一个辅助类
Files.deleteIfExists(path1);
} catch (IOException e) {
e.printStackTrace();
}
}
}