Java io流之File
文件和文件夹创建和删除
package com.main;
import java.io.File;
import java.io.IOException;
public class 文件和文件夹删除和创建 {
public static void main(String[] args) throws IOException {
//物理文件的java对象描述
//File可以代表文件和文件夹
//File对象可以创建、删除、获取文件和文件夹
//判断文件、文件夹是否存在,不存在则创建
File file = new File("d:\\index.txt");//文件
File folder = new File("d:\\index");//文件夹
if(file.exists()){
file.delete();//存在文件则删除
System.out.println("文件删除成功~");
}else{
if(file.createNewFile()){
System.out.println("文件创建成功~");
}
}
if(folder.exists()){
folder.delete();
System.out.println("文件夹删除成功~");
}else{
if(folder.mkdir()){
System.out.println("文件夹创建成功~");
}
}
}
}
总结:
- 文件的创建和文件夹的创建不同,前者使用createNewFile()方法,而后者使用mkdir()方法创建;
- 区别mkdir()方法和mkdirs()方法:
- mkdir()表示只能在已经存在的目录下创建文件夹
- mkdirs()表示可创建多久目录,即可以在不存在的目录下创建文件夹
获取文件规范全路径
package com.main;
import java.io.File;
import java.io.IOException;
public class 获取文件规范全路径 {
public static void main(String[] args) {
//文件的路径
//这里使用getCanonicalPath()方法返回规范的全路径
File file=new File("d:\\hzj123.txt");
try {
System.out.println(file.getCanonicalPath());
}
catch (IOException e) {
}
}
}
递归算法获取目录下的所有文件和文件夹
package com.main;
import java.io.File;
public class 递归获取文件和文件夹路径 {
static int fileNum = 0;// 目录下文件总数
static int folderNum = 0;// 目录下文件夹总数
static int totalTimes = 0;// 记录总共遍历的次数
static boolean isRoot = false;// 表示默认不是根目录
// 递归
public static void allFile(String pathname) {
totalTimes += 1;
File file = new File(pathname);
// 判断是否存在,并且是文件夹
if (file.exists()) {
// 判断是文件还是文件夹
if (file.isDirectory()) {
// 第一次访问的时候
if (totalTimes == 0) {
folderNum = -1;
}
folderNum += 1;
// System.out.println(folderNum + "文件夹:" + file);
File[] files = file.listFiles();// 获得当前所有的文件路径集合
// 如果没有访问权限,那么会得到空对象,所以,此处应该包含这类判断
if (files == null) {
} else if (files.length > 0) {
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
allFile(files[i].toString());
}
}
}
} else if (file.isFile()) {
fileNum += 1;
System.out.println(fileNum + "文件:" + file);
} else {
}
} else {
System.out.println("路径不存在~");
}
}
public static void main(String[] args) {
File file = new File("G:\\Media\\练声");
if (file.exists()) {
allFile(file.toString());
}
System.out.println("当前目录以下文件总数为:" + fileNum);
System.out.println("当前目录以下文件夹总数为:" + folderNum);
System.out.println("递归次数:" + totalTimes);
}
}
另一种递归方式获取…
package com.main;
import java.io.File;
import java.io.IOException;
public class 另一种效率高很多的递归方式获取文件夹和文件路径 {
// 打印出给定的根文件夹的所有文件或者文件夹
public void getAllFiles(String path) {
File file = new File(path);
File[] files = file.listFiles();
try {
for (int i = 0; i < files.length; i++) {
// 打印结果
try {
System.out.println(files[i].getCanonicalPath());
} catch (IOException e) {
e.printStackTrace();
}
// 如果是目录,那么继续使用getAllFiles方法递归
if (files[i].isDirectory()) {
try {
getAllFiles(files[i].getCanonicalPath());
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (Exception e) {
}
}
/**
* @param args
*/
public static void main(String[] args) {
另一种效率高很多的递归方式获取文件夹和文件路径 test4 = new 另一种效率高很多的递归方式获取文件夹和文件路径();
test4.getAllFiles("C:\\");
}
}