Java_File类

File类

java.io.File类代表文件和目录, 在开发中, 读取文件, 生成文件, 删除文件, 修改文件的属性时经常用到此类
File类常见构造方法: public File(String pathname), 以pathname为路径创建File对象, 如果pathname是相对路径, 则默认的当前路径在系统属性user.dir中存储
在eclipse项目开发中, user.dir就是本项目的目录. 因此, 执行完毕后, 在本项目和D盘下都生成了新文件(如果是eclipse下, 需用按F5刷新目录结构才能看到新文件)

方法 说明
pathSeparator, separator 路径分隔符
File(String parent, String child) 构造器
File(File parent, String child) 构造器
File(String name) 构造器, 没有路径则以工程目录(user.dir)作为相对路径
public boolean exits() 判断File是否存在
public boolean isDirectory() 判断File是否是目录
public boolean isFile() 判断File是否是文件
public long lastModified() 返回File最后修改时间
public long length() 返回File大小, 若不存在则返回0
public String getName() 返回文件名
public String getPath() 返回文件的目录路径, 绝对路径则返回绝对路径, 相对路径则返回相对路径
public String getAbsolutePath() 返回绝对路径
public getParent() 返回父路径
createNewFile() 创建新的File
delete() 删除目录或文件
length() 返回文件大小
list() 列出目录下所有文件
listFiles() 把列出的文件/目录转化为对象
listRoots() 列出根路径
mkdir() 创建一个目录, 中间某个目录缺失, 则创建失败
mkdirs() 创建多个目录, 中间某个目录缺失, 则创建缺失目录
/**********构造实例***********/
import java.io.File

String path = "G:\eclipse-workspace\Pro-1\IO.png";	// 两个反斜杠中有一个为转义字符
String path = "G:" + File.separator + "eclipse-workspace" + File.separator + "Pro-1" + File.separator + "IO.png";	// 利用File类中的字符拼接常量拼接路径
String path = "G:/eclipse-workspace/Pro-1/IO.png";		// 推荐此种方法

File src = new File(path); 											// 利用全路径名构建对象 
src = new File(new File("G:/eclipse-workspace"), "Pro-1/IO.png");	// 利用父对象, 子对象构造实例对象
src = new File("IO.png");											// 在当前工程路径下构造对象

System.out.println(System.getProperty("user.dir"));		// 输出工程路径

/******getpath()返回路径*******/
import java.io.File

public static void main(String[] args) {
	String path = "G:/eclipse-workspace/Pro-1/IO.png";

	File src = new File(path);
	System.out.println(src.getPath());
	System.out.println(src.length());
	System.out.println("########################");

	src = new File(new File("G:/eclipse-workspace"), "Pro-1/IO.png");
	System.out.println(src.length());
	System.out.println(src.getPath());
	System.out.println("########################");
		
	src = new File("IO.png");
	System.out.println(System.getProperty("user.dir"));
	System.out.println(src.getPath());
	System.out.println(src.length());
}

/*
G:eclipse-workspacePro-1IO.png
36981
########################
36981
G:eclipse-workspacePro-1IO.png
########################
G:eclipse-workspacePro-1
IO.png
36981
*/
/*********路径相关*********/
public static void main(String[] args) {
	File src = new File("IO.png");
	File src_1 = new File("haha/IO.png");
		
	System.out.println("名称: " + src.getName());
	System.out.println("工程路径: " + System.getProperty("user.dir"));
	System.out.println("路径: " + src.getPath());
	System.out.println("绝对路径: " + src.getAbsolutePath());
	System.out.println("父路径: " + src.getParent());			// 没有路径分割符, 所有父路径为空
	System.out.println("父对象: " + src.getParentFile());		// 没有路径分割符, 所有父对象为空
	System.out.println("src_1父路径: " + src_1.getParent());
	System.out.println("src_1父对象: " + src_1.getParentFile());
}

/*
名称: IO.png
工程路径: G:eclipse-workspacePro-1
路径: IO.png
绝对路径: G:eclipse-workspacePro-1IO.png
父路径: null
父对象: null
src_1父路径: haha
src_1父对象: haha
*/
/**********************示例程序***************************/
import java.io.File;
import java.io.IOException;
import java.util.Date;

public static void main(String[] args) throws IOException {
//	File f1 = new File("d:/a.txt");	// 使用斜杠反斜杠都可以
	File f1 = new File("d:\a.txt");	// 两个反斜杠其中有一个是脱字符
	System.out.println(f1);
	f1.renameTo(new File("d:/bb.txt"));
	
	File f2 = new File("gg.txt");
//	f2.createNewFile();		//创建文件
	
	System.out.println("f2是否存在: " + f2.exists());
	System.out.println("f2是否是目录: " + f2.isDirectory());
// 把f2.createNewFile();注释掉则没有文件生成, 所有返回false	
	System.out.println("f2是否是文件: " + f2.isFile());
	System.out.println("f2最后修改时间: " + new Date(f2.lastModified()));
	System.out.println("f2的大小: " + f2.length());
	System.out.println("f2的文件名: " + f2.getName());
	System.out.println("f2的工程目录: " + System.getProperty("user.dir"));
	System.out.println("f2的目录路径: " + f2.getPath());
	System.out.println("f1的目录路径: " + f1.getPath());
}

/*
d:a.txt
f2是否存在: false
f2是否是目录: false
f2是否是文件: false
f2最后修改时间: Thu Jan 01 08:00:00 CST 1970
f2的大小: 0
f2的文件名: gg.txt
f2的工程目录: G:eclipse-workspacePro-1
f2的目录路径: gg.txt
f1的目录路径: d:a.txt
*/
/***********list(), listFiles()*******/
import java.io.File;

public static void main(String[] args) {
	File dir = new File(System.getProperty("user.dir"));
	
	// 列出目录下所有文件/目录
	String[] subNames = dir.list();
	for(String s : subNames) {
		System.out.print(s + "	");
	}
	System.out.println();
	
	// 以对象形式列出的目录/文件
	File[] subFiles = dir.listFiles();
	for(File s : subFiles) {
		System.out.print(s.getAbsolutePath() + "	");
	}
	System.out.println();
	
	// 列出所有盘符
	File[] roots = dir.listRoots();
	for(File r : roots) {
		System.out.print(r.getAbsolutePath() + "	");
	}
}

/*
.classpath	.project	.settings	bin	IO.png	src	
G:eclipse-workspacePro-1.classpath	G:eclipse-workspacePro-1.project	G:eclipse-workspacePro-1.settings	G:eclipse-workspacePro-1in	G:eclipse-workspacePro-1IO.png	G:eclipse-workspacePro-1src	
C:	D:	E:	F:	G:
*/
/*********递归形式打印*********/
import java.io.File;

public static void main(String[] args) {
	File src = new File(System.getProperty("user.dir"));
	
	printDirFile(src, 0);
}	
public static void printDirFile(File src, int deep) {
	for(int i = 0; i < deep; i ++) {
		System.out.print("-");
	}
	
	System.out.println(src.getName());
	
	if(null == src || !src.exists()) {
		System.out.println("路径错误!!!");
	}else if(src.isDirectory()) {
		for(File s : src.listFiles()) {
			printDirFile(s, deep + 1);
		}
	}
}

/*
Pro-1
-.classpath
-.project
-.settings
--org.eclipse.jdt.core.prefs
-bin
--zyb
---cn
----FileDemo_01.class
----FileDemo_02.class
-IO.png
-src
--zyb
---cn
----FileDemo_01.java
----FileDemo_02.java
*/
/**************创建文件与目录示例程序****************/
import java.io.File;
import java.io.IOException;

public static void main(String[] args) throws IOException {
	File f = new File("d:/c.txt");
	f.createNewFile();
	
	// con com3... 操作系统的设备名,不能正确创建
//	File src = new File("G:eclipse-workspacePro-1con");
//	src.createNewFile();		// 报错
	
	f.renameTo(new File("d:/g.out"));
	// 删除不了重命名后的文件	
	f.delete();	
	
	File f2 = new File("d:/电影/华语/大陆");
	boolean flag = f2.mkdir();
	System.out.println(flag);
	
	// 可删除目录与文件
//	f2.delete();
	boolean flag2 = f2.mkdirs();
	System.out.println(flag2);
}

/*
false
true
*/
/*************File类应用*****************/
import java.io.File;
import java.io.IOException

public static void main(String[] args) {
	File file = new File("d:/zyb/b.txt");
	
	// 判断该文件是否存在
	boolean flag = file.exists();
	
	// 如果存在则删除, 不存在则创建
	if(flag) {
		// 删除
		boolean flagd = file.delete();
		if(flagd) {
			System.out.println("删除成功");
		}
		else {
			// 没有删除zyb目录
			System.out.println("删除失败");
		}
	}
	else {
		// 创建
		boolean flagn = true;
		try {
			File dir = file.getParentFile();
		
		dir.mkdirs();
		// 创建文件
		flagn = file.createNewFile();
		System.out.println("创建成功");
		}
		catch (IOException e) {
			System.out.println("创建失败");
			e.printStackTrace();
		}
	}
	
}

/*
创建成功
*/

待续

原文地址:https://www.cnblogs.com/hesper/p/9736579.html