1. 概念
从内存层面映射到物理层面,JVM关闭之后内存中的数据会消失,所以要将数据转化为相应的文件进行持久化存储;反之从物理映射到内存则是文件读取过程。
由于Java是面向对象的语言,所以每个文件或文件夹对应的则是File类的对象,File类只涉及文件创建、删除、重命名等操作,不能实现对文件内部读写,实现需要采用IO流完成,将File类对象传入IO流构造器中
路径分隔符与系统有关,Windows默认使用 “ \ ” ,UNIX和URL使用 “ / ”表示,由于Java程序支持跨平台运行,所以提供动态分隔符
2. 实例
/*
* 1.构造器
*/
//指明相对、绝对路径,不指明的话在当前系统下的user.dir中存储
//双斜杠是因为单斜杠有转义的意思
File file = new File("E:\\test\\hello.txt");
System.out.println(file);
//动态分隔符,File类的静态常量 separator
String s = File.separator;
File file1 = new File("E:" + s + "test" + s + "he.txt");
System.out.println(file1);
//指定目录,文件名或文件夹名
File file2 = new File("E:\test","hi.txt");
//指定文件类型的路径,文件名
File path = new File("\"E:\\test\"");
File file3 = new File(path,"hi.txt");
/*
* 2.常用方法
*/
File file = new File("E:\\test\\hello.txt");//绝对路径
File file1 = new File("hi.txt");//相对路径
System.out.println(file.getAbsolutePath() + "---" + file1.getAbsolutePath());//获取绝对路径
System.out.println(file.getPath() + "---" + file1.getPath());//获取路径
System.out.println(file.getName() + "---" + file1.getName());//获取名称
System.out.println(file.getParent() + "---" + file1.getParent());//获取上层文件目录
System.out.println(file.length() + "---" + file1.length());//获取文件长度
System.out.println(file.lastModified() + "---" + file1.lastModified());//获取最后修改时间
File path = new File("E:\\test");
String[] list = path.list();//展示下层目录中的文件或文件名,要求文件夹必须存在
for (String fileName : list) {
System.out.println(fileName);
}
File[] files = path.listFiles();//以绝对路径方式展示
for (File f : files) {
System.out.println(f);
}
File file = new File("E:\\test\\hello.txt");
File file1 = new File("hi.txt");
//更名并移动路径,要求源文件必须有,但移动到的路径下无新命名的重名文件
boolean renameTo = file.renameTo(file1);
System.out.println(renameTo);
File file = new File("E:\\test");
File file1 = new File("hi.txt");
System.out.println(file.isDirectory());//判断是否为文件夹
System.out.println(file.isFile());//判断是否是文件
System.out.println(file.exists());//判断是否存在
//判断是否可读、可写、可执行、隐藏
System.out.println(file.canRead() + "-" + file.canWrite() + "-" + file.canExecute()+"-"+file.isHidden());
String path = "E:\\test\\a\\b";
String name = path+File.separator+"test.txt";
File filePath = new File(path);
File fileName = new File(name);
if (!filePath.exists()||!fileName.exists()){
try {
// filePath.mkdir();//只创建最后一层文件夹,如果上层文件夹不存在则执行失败
filePath.mkdirs();//如果上层文件夹不存在一并进行创建
fileName.createNewFile();//创建文件
System.out.println("创建成功");
} catch (IOException e) {
e.printStackTrace();
}
}else {
System.out.println("删除成功");
fileName.delete();//删除文件
}
String path = "E:\\test";
File filePath = new File(path);
if (filePath.exists()) {
for (String s : filePath.list()) {
//判断后缀
if (s.endsWith("jpg")) {
System.out.println(s);
}
}
}