1.构造函数
最基本的构造方法。
public File(String pathname) {
if (pathname == null) {
throw new NullPointerException();
}
//将文件路径转为正常状态
this.path = fs.normalize(pathname);
//计算长度的路径字符串前缀,字符串必须是在正常的格式。
this.prefixLength = fs.prefixLength(this.path);
}
里面用到下面三个变量
//本地文件系统
static private FileSystem fs = FileSystem.getFileSystem();
//文件路径
private String path;
//路径长度
private transient int prefixLength;
另外有两个私有的构造函数+两个公有构造函数,里面只有对path和prefixLength复制的操作。
//里面操作都一样,就是给两个变量赋值。
public File(File parent, String child)
public File(String parent, String child)
//前面的child为路径,后面的为文件
private File(String child, File parent)
//路径+路径长度
private File(String pathname, int prefixLength)
以网络路径赋值的构造方法,目前我还不会用这个。似乎是file://192.168.1.201/wan/a.txt 这样的链接。
public File(URI uri) ;
2.createNewFile创建文件
/*SecurityManager 为安全管理器是一个允许应用程序实现安全策略的类。,权限分为以下类别:文件、套接字、网络、安全性、运行时、属性、AWT、反射和可序列化*/
public boolean createNewFile() throws IOException {
SecurityManager security = System.getSecurityManager();
//检查路径是否有写的权限。
if (security != null) security.checkWrite(path);
//创建文件,内部方法是native的
return fs.createFileExclusively(path);
}
//下面是SecurityManager类中的方法。内部方法很复杂,看不懂。只知道是检查文件能不能写的功能。
public void checkWrite(String file) {
checkPermission(new FilePermission(file,
SecurityConstants.FILE_WRITE_ACTION));
}
3.isDirectory和isFile
如果文件或者文件夹不存在的话这两个方法都返回false
//路径名表示的文件是否是一个目录
public boolean isDirectory() {
SecurityManager security = System.getSecurityManager();
if (security != null) {
//看这个路径是否有读权限
security.checkRead(path);
}
//里面没内容,这里为什么只用一个&符号?
return ((fs.getBooleanAttributes(this) & FileSystem.BA_DIRECTORY)
!= 0);
}
//路径名表示的文件是否是一个标准文件。
public boolean isFile() {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkRead(path);
}
return ((fs.getBooleanAttributes(this) & FileSystem.BA_REGULAR) != 0);
}
4.mkdir和mkdirs 创建目录
//只创建一个目录,如果多级目录都不存在就失败
public boolean mkdir() {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(path);
}
//如果文件已经存在或者创建权限不够,返回false
return fs.createDirectory(this);
}
//创建多级目录
public boolean mkdirs() {
if (exists()) {
return false;
}
if (mkdir()) {
return true;
}
File canonFile = null;
try {
canonFile = getCanonicalFile();
} catch (IOException e) {
return false;
}
File parent = canonFile.getParentFile();
return (parent != null && (parent.mkdirs() || parent.exists()) &&
canonFile.mkdir());
}
看到这里已经觉得没意思了,里面的内容都看不了,都是抽象和native。
5.list和listFiles
这两个方法都是先判断有没有读权限,然后一个native方法结束。下面是使用
public static void main(String args[]) throws IOException {
File f = new File("src");
//这里返回的是文件数组
File[] l = f.listFiles();
for (int i = 0; i < l.length; i++) {
System.out.println(l[i].getName());
}
//这里返回的是文件名字符串数组
String[] s = f.list();
for (int i = 0; i < s.length; i++) {
System.out.println(s[i]);
}
}
这个是过滤器,实现FilenameFilter接口的accept方法。
一个例子,
String[] names =f.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".java")){
return true;
}
return false;
}
});
//过滤文件名以.java结尾的文件
public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
ArrayList v = new ArrayList();
for (int i = 0 ; i < names.length ; i++) {
//这里的this为当前文件夹。为File类。
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
//最后强转?
return (String[])(v.toArray(new String[v.size()]));
}
6.delete
只能删除空文件夹和单个文件。
7.构造函数的路径
new File("src.txt");//出现在当前项目中的根目录。
new File("src/abc.txt");//在当前项目中的根目录下的src文件夹下。
new File("/abc.txt");//在当前盘符的根目录下。
new File(new File("C:\abc"),"xyz\abc.txt");
//创建的目录为C:\abc\xyz\abc.txt
不看了
分享到:
相关推荐
手把手教你搭建Tomcat7源码开发环境,如果有了如下说明还搭建不成功,建议考虑下自己的理解能力,能不能走编码这条路。附近包括Tomcat源码、Tomcat源码开发环境依赖的包、Tomcat的环境编译工具ant 1、建立如下...
基于预训练模型BERT的阅读理解python源码+使用说明.zip 1. Prepare data, the virtual python environment and install the package in requirements.txt 2. Run the command below to fine tune ```bash python ...
注意!看了周志明的《深入理解Java虚拟机》上面帖的地址。上面的网站下载得文件不知道是服务器的原因还是什么只有1m多。 从网上找到的正常文件。编译openjdk12源码,调试jvm。可以下载这个
第4章 深入理解Activity 169 4.1 建立、配置和使用Activity 170 4.1.1 建立Activity 170 4.1.2 配置Activity 177 4.1.3 启动、关闭Activity 179 4.1.4 使用Bundle在Activity之间 交换数据 181 4.1.5...
对网络上minix1.0文件系统的修正和功能扩充,是学习minix的不可多得的工具帮手, 尤其是理解minix文件系统组织结构和源码有力工具。 修改日期: hugion 2009.6.14 增加内容:扩充对minix2.0文件系统的支持 包括minix...
- 本软件为自由软件, 你可以随意传播, 但源码使用请参见许可协议. - 只有在启动或退出程序, 使用离开模式, 刷新在线用户时 IPMsg 才会进行消息广播. - 本软件由 Microsoft Visual C++ 6.0 编译 广域网设置...
包含qt完整的工程目录以及原始的一份控制台源码。代码有问题可以评论。 1、实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 2、实验内容 为linux系统设计一个简单的二级文件...
通用管理系统系统配置源码 许多应用程序都需要配置 这种配置可以用数据库作为存储,但是仅仅为了一个记录,建立一个表格,有点太浪费,所以最好用xml进行以文本方式存放,在配置不大的情况下,读写文本文件比...
File 类、RandomAccessFile 类、字节流(文件字节流、缓冲字节流、基本数据类型字节流、打印流、对象序列化流、字节数组流)、字符流(缓冲字符流、文件字符流、转换流、格式化输出流、字符数组流) 这份代码源码...
5.2.3 使用auto_prepend_file和auto_append_file 5.3 在PHP中使用函数 5.3.1 调用函数 5.3.2 调用未定义的函数 5.3.3 理解字母大小写和函数名称 5.4 理解为什么要定义自己的函数 5.5 了解基本的函数结构 ...
包含qt完整的工程目录以及原始的一份控制台源码。代码有问题可以评论。 1、实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 2、实验内容 为linux系统设计一个简单的二级文件...
包含qt完整的工程以及原始的一份控制台源码。代码有问题可以评论。 1、实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 2、实验内容 为linux系统设计一个简单的二级文件系统。...
argv[]指向3个字符串,这些理解了。后面就没问题了。它是根据 argc来判断参数应该使用的命令。 应用层总体思路: (argc==5 || argc==6)因为其中有一个是可选的,进行操作是Mount。分析代码时,请一边看结果,一 ...
简单的来理解就是:我们只对某个特定后缀名的文件进行检测及备份;在for file in files 循环的内部加一个适当的测试就可以实行了。 Python 文件备份 这里举一个例子: name, ext = os.path.splitext(file) if ext ...
通过这些资源,其他人可以快速理解和使用本研究的方法和系统。 本研究的意义在于提供了一种新的、基于深度学习的人员计数系统,可以应用于各种领域和场景。与传统的计数方法相比,本系统具有更高的准确性和智能性,...
我在main.json中写了几个例子,方便理解 目录:api/tongji,此API请勿删除或更改名称,否则将会影响API调用统计。 在自己的API中顶部加入代码,即可开始统计API总体调用次数 (记得把域名改成API管理站点的域名...
天衍系列 04】深入理解Flink的ElasticsearchSink组件:实时数据流如何无缝地流向Elasticsearch gitee代码仓库地址: https://gitee.com/shawsongyue/aurora_flink/tree/develop/aurora_elasticsearch_connector
java开发oa办公系统源码 智能办公系统 一、介绍 1、本项目为90%开源项目,用户可以用户开发学习,用户可自主开发除工作流以外的业务系统。 2、前往微信公众号查看详情: 二、软件架构 本项目JDK8x64+SpringBoot+...
本人经过4个小时顺利将hadoop官方的32位编译为64位,通过测试可用,方便在64位linux安装hadoop的用户使用,编译时间很长,也很苦啊,解决了很多报错的问题,所以分多要一点,还望理解! 注:*****因为本人CSDN等级...
同时支持切换多种语言(来自国外,本人加上了中文语言,确保无语言理解误区),可更换排序方式。可谓是麻雀虽小,五脏俱全。无任务时不会自动后台运行,无需数据库;使用时占用cpu很小。只要将其放在根目录,需要时...