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. Vue.js 2.x笔记:服务请求axios(8)

    1. axios简介 vue2.0之后,推荐使用axios. axios官方地址:https://github.com/axios/axios 2. axios安装 npm安装: npm instal ...

  2. delphi中响应鼠标进入或离开控件的方法

    Delphi没有MouseEnter与MouseLeave的事件,网上说可以响应CM_MOUSEENTER和CM_MOUSELEAVE消息来实现.这两个消息是VCL自己定义的消息,看了Delphi的C ...

  3. sql 根据身份证号码计算年龄

    ,), GETDATE()) / 365.25) from ConstructionInfo

  4. Stars project

    说明:收藏一些比较好的开源项目 Python实现了所有的排序算法 Github:https://github.com/TheAlgorithms/Python 该项目用Python实现了所有的排序算法 ...

  5. PHP——??空合并运算符和?:三元运算符

    前言 在上一篇随笔,用三元运算符简单写的一个东西,引发了对他的兴趣,所以打算研究下. PHP7的新特性: https://php.net/manual/zh/migration70.new-featu ...

  6. P2447 [SDOI2010]外星千足虫 (高斯消元)

    题目 P2447 [SDOI2010]外星千足虫 解析 sol写到自闭,用文字描述描述了半个小时没描述出来,果然还是要好好学语文 用高斯消元求解异或方程组. 因为 \(奇数\bigoplus奇数=偶数 ...

  7. Dlib Python 检测人脸特征点 Face Landmark Detection

    首先安装Dlib,Opencv库 Dlib安装链接:http://www.cnblogs.com/as3asddd/p/7237280.html 环境:Mac Sierra 10.12.1 Pytho ...

  8. 题解:[JSOI2004]平衡点 / 吊打XXX

    这个题目算是一个模拟退火的板子题 物重一定,绳子越短,重物越低,势能越小,势能又与物重成正比 使得$\sum_{i=1}^nd[i]*w[i]$也就是总的重力势能最小,可以使得系统平衡 交了两面半.. ...

  9. P1417 烹调方案 (0/1背包+贪心)

    题目背景 由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的 ...

  10. CF5E 【Bindian Signalizing】

    题意 \(n\)座山组成一个环,相连的圆弧上其他山它们高那么这两座山能互相看到,求能看到的山的组数. 题解 设\(left[i]\)表示左边第一个比\(i\)高的位置,同理\(right[i]\)表示 ...