File
File 作用
1.操作文件
2.操作文件夹
3.操作文件的路径
分隔符
获取路径分隔符
String pathseparator = File.pathSeparator;
System.out.println(pathseparator);
不同平台下获取的路径分隔符不同
mac 系统下路径分隔符为:(冒号)
Windows 系统下路径分隔符为;(分号)
获取分隔符
String f = File.separator;
System.out.println(f);
不同平台下获取的分隔符不同
mac 系统下/Users/Desktop
Windows 系统下\
因此,需要跨平台时,在定义的时候,定义为 f + Users + f + Desktop
File 基本方法
构造方法
File(String pathname)
private static void construction() {
/*
* 绝对路径
* 硬盘上的路径并且这个路径是唯一的(以/开头)
*
* 相对路径
* 相对路径是有参照物的
*/
File file = new File("/Users/Desktop/Test");
System.out.println(file);
// 判断该路径是否存在
boolean exists = file.exists();
System.out.println(exists);
// 使用相对路径,参照物为当前工程根目录
File file1 = new File("src/test.txt");
// 打印相对路径
System.out.println(file1.getAbsolutePath());
// /Users/eclipse-workspace/Demo/src
boolean exists2 = file1.exists();
System.out.println(exists2);
}
File(String parent, String child)
private static void construction() {
String parent = "/Users/Desktop";
String child = "Test";
File file = new File(parent, child);
boolean exists = file.exists();
System.out.println(exists);
}
File(File parent, String child)
private static void construction() {
String parent = "/Users/Desktop";
File file = new File(parent);
File file2 = new File(file, "Test");
System.out.println(file2);
}
创建方法
创建文件的方法
文件已经存在时,不会重复创建
该方法只能创建文件,不给后缀也是创建的文件(没有后缀)
public static void main(String[] args) throws IOException {
File file = new File("/Users/Desktop/Test/test.txt");
Boolean boolean = file.createNewFile();
System.out.println(boolean);
}
例题:在工程的src 目录下创建 Test.txt
public static void main(String[] args) throws IOException {
File file = new File("src/Test.txt");
boolean createNewFile = file.createNewFile();
System.out.println(createNewFile);
}
创建文件夹
带不带后缀,创建出来的都是文件夹
mkdir() 只能创建一级文件夹
public static void main(String[] args) {
File file = new File("/Users/Desktop/Test");
boolean mkdir = file.mkdir();
System.out.println(mkdir);
}
mkdirs() 可以创建多级文件夹(只要没有就会创建)
public static void main(String[] args) {
File file = new File("/Users/Desktop/Test/X/Y/Z");
boolean mkdirs = file.mkdirs();
System.out.println(mkdirs);
}
删除方法
删除
需谨慎,不会放在回收站中
如果文件夹下,没有子文件夹可以删除
public static void main(String[] args) {
File file = new File("/Users/Desktop/Test");
boolean delete = file.delete();
System.out.println(delete);
}
判断方法
public static void main(String[] args) {
File file = new File("src/test.txt");
// 判断是否为文件夹
boolean file1 = file.isDirectory();
// 判断是否为文件
boolean file2 = file.isFile();
// 判断是否存在
boolean file3 = file.exists();
System.out.println(file1);
System.out.println(file2);
System.out.println(file3);
}
获取方法
获取路径(跟 toString 方法一样,输出路径,不管文件存在与否)
public static void main(String[] args) {
File file = new File("/Users/Desktop/思维导图/JavaSE.png");
String path = file.getPath();
System.out.println(path);
// 获取文件名字
String name = file.getName();
System.out.println(name);
// 获取文件长度(获取文件占多少字节)
// utf - 8 英文一字节,中文3字节
long length = file.length();
System.out.println(length);
// 获取父级路径
File parentFile = file.getParentFile();
System.out.println(parentFile);
}
public static void main(String[] args) {
File file = new File("/Users/Desktop/Test");
// 以字符串形式,返回路径下所有文件及文件夹的名字(一层)
String[] list = file.list();
for (String string : list) {
System.out.println(string);
}
// 以文件对象形式,获取该路径下文件的全路径(一层)
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {
System.out.println(file2);
}
}
例题:遍历打印 Test 文件下所有文件和文件夹
public static void main(String[] args) {
File file = new File("/Users/eclipse-workspace");
getFileName(file);
}
public static void getFileName(File file) {
// 获取 file 下的文件路径
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {
System.out.println(file2);
// 判断 file2 是否为文件夹
if (file2.isDirectory()) {
getFileName(file2);
}
}
}
例题:从控制台输入一个字符串 该字符串是文件夹路径 计算这个文件夹的大小
public class Demo {
static long length = 0;
public static void main(String[] args) {
File file = new File("/Users/eclipse-workspace");
long file2 = getFile(file);
System.out.println(file2);
}
public static long getFile (File file) {
// 获取 file 下的文件路径
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {
if (file2.isDirectory()) {
return getFile(file2);
} else {
length = length + file2.length();
}
}
return length;
}
}
http://blog.csdn.net/huzongnan/article/list