package Demo41;
import java.io.File;
/*
java.io.File类
文件和目录路径的抽象表现形式。
java把电脑中的文件和文件夹(目录)封装为了一个FIle类,我们可以使用File类对文件和文件夹进行操作
可以使用FIle中的方法
创建一个文件/文件夹
删除文件/文件夹
获取文件/文件夹
判断文件/文件夹是否存在
对文件夹进行遍历
获取文件的大小
File类是一个与系统无关的类,任何操作系统都可以使用这个方法
重点词:
file:文件
directory:文件夹/目录
path:路径
静态方法:
static String pathSeparator 与系统相关的路径分隔符字符,为方便起见,表示为字符串。
static char pathSeparatorChar 与系统相关的路径分隔符。
static String separator 与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。
static char separatorChar 与系统相关的默认名称分隔符。
操作路径不能写死了:
比如 C:\develop\a.txt windows 反斜杠要写俩个 \\转义字符
C:/develop/a.txt linux
应该写成这样:
"C:"+File.separator+"develop"File.separator+"a.txt"
*/
public class DemoFile {
public static void main(String[] args) {
String pathSeparator = File.pathSeparator;
System.out.println(pathSeparator);//路径分隔符字符 windows:分号; linux:冒号:
String separator = File.separator;
System.out.println(separator);//文件名称分隔符 windows:反斜杠\ linux:正斜杠/
}
}
package Demo41;
import java.io.File;
/*
路径:
绝对路径:是一个完整的路径
以盘符开始的
相对路径:是一个简化路径
相对于当前项目的根目录
注意:路径中不区分大小写
File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。
File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。
File(URI uri) 通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。
*/
public class DemoFile1 {
public static void main(String[] args) {
show01();
show02("C:\\","a.txt");
show03();
}
// File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。
//好处可以使用File的方法对路径进行操作,在使用路径创建对象
private static void show03() {
File parent = new File("C:\\");
File file = new File(parent, "hello");
System.out.println(file);
}
//File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。
//好处是两个路径可以单独写
private static void show02(String parent, String child) {
File file = new File(parent,child);
System.out.println(file);//C:\a.txt父路径和子路径组装成一起
}
private static void show01() {
//File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
File f1 = new File("E:\\hadoop\\testfile");
System.out.println(f1);
}
}
package Demo41;
import java.io.File;
/*
File类获取功能的方法
-public String getAbsolutePath(): 返回此File的绝对路径名称字符串
-public String getPath(): 将此file转换为路径名字符串
-public String getName(): 返回由此文件表示的文件或目录的名称
-public Long Length(): 返回由此File表示的文件的长度
*/
public class DemoFile2 {
public static void main(String[] args) {
show01();
System.out.println("==================");
show02();
System.out.println("===================");
show03();
System.out.println("===================");
show04();
}
// -public Long Length(): 返回由此File表示的文件的长度
//路径不存在,返回0
private static void show04() {
File z1 = new File("E:\\hadoop\\testfile\\spark.txt");
long l1 = z1.length();
System.out.println(l1);
File z2 = new File("E:\\hadoop");
long l2 = z2.length();
System.out.println(l2);
}
//-public String getName(): 返回由此文件表示的文件或目录的名称
//获取的就是构造方法传递路径的结尾部分
private static void show03() {
File r1 = new File("E:\\hadoop\\testfile");
String name = r1.getName();
System.out.println(name);//testfile
File r2 = new File("a.txt");
String path = r2.getName();
System.out.println(path);//a.txt
}
// -public String getPath(): 将此file转换为路径名字符串
//输入什么路径,输出就是什么路径
//toString方法就是 ()方法
private static void show02() {
File w1 = new File("E:\\hadoop\\testfile");
String w11 = w1.getPath();
System.out.println(w11);//E:\hadoop\testfile
File w2 = new File("a.txt");
String path = w2.getPath();
System.out.println(path);//a.txt
}
//public String getAbsolutePath(): 返回此File的绝对路径名称字符串
//无论是绝对路径还是相对路径,返回的都是绝对路径
private static void show01() {
File f1 = new File("E:\\hadoop\\testfile");
File f11 = f1.getAbsoluteFile();
System.out.println(f11);//E:\hadoop\testfile
File f2 = new File("a.txt");
File f22 = f2.getAbsoluteFile();
System.out.println(f22);//E:\hadoop\testfile
}
}
package Demo41;
import java.io.File;
import java.io.IOException;
/*
File判断的方法
public boolean exists(): 此File表示的文件或者目录是否实际存在
public boolean isDirectory: 此File表示是否为目录
public boolean isFile(): 此File表示是否为文件
创建删除功能的方法:
public boolean createNewFile(): 当且仅当具有该名称的文件尚不存在时,创建一个心得空文件
public boolean delete() :删除此file表示的文件或者目录
public boolean mkdir() : 创建此file表示的目录,
public boolean mkdirs() : 创建此file表示的目录, 包括任何必需但不存的父目录,多个文件夹
File类遍历
public String[] list(): 返回一个String数组, 表示该file目录中的所有子文件或者目录
public File[] listFiles(): 返回一个file数组,表示该file目录中的所有子文件或者目录
注意事项:
list方法和listFile方法遍历的是构造方法中给出的目录
如果构造方法中给粗的目录的路径不存在,会抛出空指针异常
*/
public class DemoFile3 {
public static void main(String[] args) throws IOException {
// show1();
// show2();
show3();
}
/*
File类遍历
*/
private static void show3() {
File dir = new File("E:\\hadoop");
//获取当前目录下的文件及文件夹名称
String[] names = dir.list();
for (String name : names) {
System.out.println(name);
}
//获取当前目录下的文件及文件夹对象,只要拿到了文件对象,就可以获取更多信息
File[] files = dir.listFiles();
for (File file : files) {
System.out.println(file);
}
}
/*
创建删除功能的方法:
*/
// private static void show2() throws IOException {
// //文件的创建
// File c = new File("a.txt");
// System.out.println(c.exists());
// System.out.println(c.createNewFile());
// System.out.println(c.exists());
// //目录的创建
// File d = new File("a.txt");
// System.out.println(d.exists());
// System.out.println(d.mkdir());
// System.out.println(d.exists());
// //创建多级目录
// File e = new File("C:\\hadoop\\apps");
// System.out.println(e.mkdir());
// }
//
// /*
// File判断的方法
// */
// private static void show1() {
// //判断是否存在
// File a1 = new File("E:\\hadoop\\testfile");
// boolean a11 = a1.exists();
// System.out.println(a11);
//
// File b1 = new File("a.txt");
// //判断是文件还是目录
// boolean b11 = b1.isFile();
// boolean b22 = b1.isDirectory();
// System.out.println(b11);
// System.out.println(b22);
// }
}