File类以抽象的方式代表文件名和目录路径。该类主要用于文件和目录的创建、查找、删除等。先来看一下File的构造方法:

// 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File f = new File("E:\\Java");
// 从父路径名字符串和子路径名字符串创建新的 File实例
File f1 = new File("E:\\","PersonalWork");
File f1_1 = new File((String) null,"PersonalWork");
// 从父抽象路径名和子路径名字符串创建新的 File实例。
File f2 = new File(new File("."),"MyTest");
File f2_1 = new File((File)null,"MyTest");
// 通过将给定的 file: URI转换为抽象路径名来创建新的 File实例
File f3 = null;
try {
f3 = new File(new URI("file:///E:/WorkProjects/test.html"));
} catch (URISyntaxException e) {
e.printStackTrace();
} // 实质上:当f1_1, f2_1的第一个参数都为 null, 与 f 的实现方式是一致,
// 都是通过 WinNTFilesSystem中的 normalize 方法检查给定的路径名字符串是否正常。 // 返回此抽象路径名的路径名字符串
System.out.println(f); // E:\Java
System.out.println(f1); //E:\PersonalWork
System.out.println(f1_1); // PersonalWork
System.out.println(f2); //.\MyTest
System.out.println(f2_1); // MyTest
System.out.println(f3); //E:\WorkProjects\test.html // File类的静态变量
System.out.println("---"+File.separator); // \ 与系统有关的默认名称分隔符
System.out.println("---"+File.pathSeparator);// ; 与系统相关的路径分隔符字符
  • 访问文件和目录

1访问文件名相关的方法

 File file = new File("E:\\WorkProjects\\test.html");
File file2 = new File("test.html"); System.out.println(file.getName()); // test.html 返回文件名或路径名(如果是路径,返回最后一级子路径)
System.out.println(file.getParent()); // E:\WorkProjects 返回对应目录(最后一级子目录)的父目录名
System.out.println(file.getParentFile()); // 返回父目录的抽象路径名
System.out.println(file2.getPath()); // test.html 返回对应的路径(相对)
System.out.println(file2.getAbsolutePath());// E:\WorkProjects\test.html 返回对应的绝对路径
System.out.println(file2.getAbsoluteFile());// 返回抽象的绝对路径
System.out.println(file.renameTo(new File("E:\\WorkProjects\\test1.html")));// 重命名文件 成功返回true,否则false
try {
System.out.println(file.getCanonicalFile());// 返回此抽象路径名的规范形式。
System.out.println(file.getCanonicalPath());// 返回此抽象路径名的规范路径名字符串。
} catch (IOException e) {
e.printStackTrace();
}

2.文件检测相关方法

 File file = new File("E:\\WorkProjects\\test1.html");

 System.out.println(file.exists());  //true  判断文件或者目录是否存在
System.out.println(file.isFile()); //true 判断是否是文件
System.out.println(file.isDirectory()); //false 判断是否是目录
System.out.println(file.isHidden()); //false 判断是否是隐藏文件
System.out.println(file.isAbsolute()); //true 判断是否是绝对路径
System.out.println(file.canExecute()); //true 判断是否可执行
System.out.println(file.canRead()); //true 判断是否可读
System.out.println(file.canWrite()); //true 判断是否可写

3文件操作相关方法

File file = new File("E:\\WorkProjects\\test.txt");
File file2 = new File("E:\\zzz\\www\\"); try {
System.out.println(file.createNewFile()); // 创建文件,若文件不存在且创建成功,返回true。创建失败(或存在)返回false
// 在 E:\zzz 目录下创建一个文件名为 test0001...bb 的临时文件
File temp =File.createTempFile("test0001","bb",new File("E:\\zzz"));
if(temp.exists()) { System.out.println("create temp success");}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(file.delete()); //删除文件或目录,若删除文件成功返回true否则 false;只能删除空目录,成功true否则 false
// 注册一个删除的钩子,指定当java虚拟机退出时,删除对应的文件或目录
// 若对应的目录为空目录则删除该空目录,否则不删除该目录
// 若对应的为文件则删除文件。
file2.deleteOnExit();
System.out.println("----");

4目录操作相关方法

File file = new File("E:\\WorkProjects\\");
File file2 = new File("E:\\zzz\\www\\aa\\bb"); System.out.println(file2.mkdir()); // 创建目录,成功返回true否则false; 若父目录不存在则创建失败
System.out.println(file2.mkdirs()); // 递归创建,不需要考虑父目录是否存在。若路径存在则创建失败 false String [] list = file.list(); // 列出该目录下的所有文件名及子目录名
System.out.println(Arrays.toString(list)); //例如: test.txt
File[] files = file.listFiles(); // 列出该目录下的所有文件路径名及子目录路径名
System.out.println(Arrays.toString(files)); //例如: E:\WorkProjects\test.txt
File[] root = File.listRoots(); // 列出系统所有根路径
System.out.println(Arrays.toString(root)); //例如: window上 [C:\, D:\, E:\, F:\]

5文件相关信息

File file = new File("E:\\WorkProjects\\test1.html");

System.out.println(new Date(file.lastModified())); //Sun Aug 01 17:10:10 CST 2018  返回文件最后修改的时间
System.out.println(file.length()); //1661 返回文件内容的长度

6.设置文件相关属性

File file = new File("E:\\WorkProjects");

System.out.println(file.setExecutable(true)); // 设置文件或目录可执行
System.out.println(file.setReadable(true)); // 设置文件或目录可读
System.out.println(file.setWritable(true)); // 设置文件或目录可写
System.out.println(file.setReadOnly()); // 设置文件或目录只允许读取操作
System.out.println(file.setLastModified(System.currentTimeMillis())); // 设置文件或目录最后修改时间
  • 文件过滤器

    File类中的list()方法中可接受一个FileNameFilter参数,通过该参数可以只列出符合条件的文件。listFiles()方法中可以接受FileNameFilter或者FileFilter参数。
 File file = new File("E:\\WorkProjects");
File file1 = new File("."); // 列出该目录下不包含隐藏文件或目录的所有文件及子目录
// java 1.8 Lambda表达式写法
//File[] files = file.listFiles(pathname -> !pathname.isHidden());
File[] files = file.listFiles(pathname -> {
if(!pathname.isHidden()) {
return true;
}
System.out.println(pathname+" it's a hidden file or folder");
return false;
});
/*File[] files = file.listFiles(new FileFilter() { //java.io.FileFilter 过滤器
@Override
public boolean accept(File pathname) {
if(!pathname.isHidden()) {
//System.out.println( "accept--"+ "It isn't a hidden file or folder");
return true;
}
System.out.println(pathname+" it's a hidden file");
return false;
}
});*/
System.out.println(Arrays.toString(files));
 --------------------------------分割线---------------------------------
//列出该目录下文件名以 .java结尾,或者文件对应一个路径
//String [] nameList = file1.list((dir, name) -> (name.endsWith(".java")|| new File(name).isDirectory());
String [] nameList = file1.list((dir, name) -> {
if(name.endsWith(".java")|| new File(name).isDirectory()){
return true;
}
System.out.println("dir:"+dir+ " , name"+name );
return false;
});
/* String [] nameList = file1.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".java")|| new File(name).isDirectory()){
return true;
}
System.out.println("dir:"+dir+ " , name"+name );
return false;
}
});*/
System.out.println(Arrays.toString(nameList));

Java_File类的更多相关文章

  1. Java_File类讲解_打印目录树状结构_递归算法

    package cn.xiaocangtian.testFile; import java.io.File; public class FileTree { public static void ma ...

  2. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  3. Java——File类概述

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  4. C++ 可配置的类工厂

    项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...

  5. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  6. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  7. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

  8. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  9. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

随机推荐

  1. AirPods 2 & Android

    AirPods 2 & Android AirBattery https://play.google.com/store/apps/details?id=friedrich.georg.air ...

  2. Add AI feature to Xamarin.Forms app

    Now, AI is one of important technologies.Almost all platforms have API sets of AI. Following list is ...

  3. NSParagraphStyle 的属性

    UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 20, 20)]; label.font = [UIFont sys ...

  4. 【THUSC2017】【LOJ2978】杜老师 高斯消元

    题目大意 给你 \(l,r\),求从 \(l\) 到 \(r\) 这 \(r-l+1\) 个数中能选出多少个不同的子集,满足子集中所有的数的乘积是一个完全平方数. 对 \(998244353\) 取模 ...

  5. MT【327】两道不等式题

    当$x,y\ge0,x+y=2$时求下面式子的最小值:1)$x+\sqrt{x^2-2x+y^2+1}$2)$\dfrac{1}{5}x+\sqrt{x^2-2x+y^2+1}$ 解:1)$P(x,y ...

  6. Codeforces 1093D Beautiful Graph(二分图染色+计数)

    题目链接:Beautiful Graph 题意:给定一张无向无权图,每个顶点可以赋值1,2,3,现要求相邻节点一奇一偶,求符合要求的图的个数. 题解:由于一奇一偶,需二分图判定,染色.判定失败,直接输 ...

  7. DBCP 连接池

    DBCP数据源 DBCP 是 Apache 软件基金组织下的开源连接池实现 导入maven包: <!-- dbcp连接池 --> <dependency> <groupI ...

  8. 解决springboot jar包冲突

    直接导入springboot父项依赖,其它相关springboot依赖version不用写,由spring自动依赖. <parent> <groupId>org.springf ...

  9. keras使用

    一.pad_sequences from keras.preprocessing.sequence import pad_sequences keras只能接受长度相同的序列输入.因此如果目前序列长度 ...

  10. web故障排查常用命令

    整理总结了一些常用分析网站的命令方便大家快速定位故障所在排除故障,最小化的减少故障给业务带来的影响. 端口连接类 1.查看TCP连接状态 netstat -nat |awk '{print $6}'| ...