1. File的常用方法
Files.exists():检测文件路径是否存在。
Files.createFile():创建文件。
Files.createDirectory():创建文件夹。
Files.delete():删除一个文件或目录。
Files.copy():复制文件。
Files.move():移动文件。
Files.size():查看文件个数。
Files.read():读取文件。
Files.write():写入文件。
2. IO流实战
1. 删除指定目录的文件
import java.io.*;
public class JavaTest {
public static void main(String[] args) throws Exception {
String filePath = "G:\\QQ视频20220227140120.mp4";
File file = new File(filePath);
delFile(file);
}
public static void delFile(File file) {
if (!file.exists()) {
System.out.println("文件不存在!!!");
return;
}
boolean rs = file.delete();
if (rs) {
System.out.println("文件删除成功");
} else {
System.out.println("文件删除失败");
}
}
}
2. 实现分行向文件中写入数据
import java.io.*;
public class JavaTest {
public static void main(String[] args) throws Exception {
String filePath = "G://a.txt";
File file = new File(filePath);
try {
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file); // 建立文件输出流
BufferedWriter bw = new BufferedWriter(fw); // 使用缓冲区数据流封装输出流
for (int i = 0; i < 100; i++) {
bw.write("Java交互管道---IO流".toCharArray()); // 写入数据到输出流
bw.newLine(); // 写入换行符
bw.flush(); // 刷新缓冲区
}
System.out.println("成功写入数据!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
3. IO流实现复制文件夹
import java.io.*;
public class JavaTest {
public static void main(String[] args) throws Exception {
File sourceFile = null;
File desFile = null;
String sourceFolder = "G:\\untitled";
String copyFolder = "G:\\a";
sourceFile = new File(sourceFolder);
if (!sourceFile.isDirectory() || !sourceFile.exists()) {
System.out.println("源文件夹不存在");
} else {
desFile = new File(copyFolder);
desFile.mkdir();
copy(sourceFile.listFiles(), desFile);
System.out.println("文件夹复制成功!");
}
}
public static void copy(File[] f1, File file) {
if (!file.exists()) {
file.mkdir();
}
for (int i = 0; i < f1.length; i++) {
// 文件类型
if (f1[i].isFile()) {
try {
FileInputStream fis = new FileInputStream(f1[i]);
FileOutputStream out = new FileOutputStream(
new File(
file.getPath() + File.separator + f1[i].getName()
)
);
int count = fis.available();
byte[] data = new byte[count];
if ((fis.read(data)) != -1) {
out.write(data);
}
} catch (Exception e) {
e.printStackTrace();
}
}
// 文件夹类型
if (f1[i].isDirectory()) {
File des = new File(file.getPath() + File.separator + f1[i].getName());
des.mkdir();
copy(f1[i].listFiles(), des);
}
}
}
}
4. 递归读取文件夹的文件名
import java.io.*;
public class JavaTest {
public static void listFile(String path) {
if (path == null) {
System.out.println("发生了空路径异常");
}
File[] files = new File(path).listFiles();
if (files == null) {
System.out.println("发生了空内容异常");
}
for (File file : files) {
if (file.isFile()) {
System.out.println(file.getName());
} else if (file.isDirectory()) {
System.out.println("Directory:" + file.getName());
listFile(file.getPath());
} else {
System.out.println("Error");
}
}
}
public static void main(String[] args) throws Exception {
JavaTest.listFile("G:\\a");
}
}