java中的File类

时间:2022-02-19 07:00:29

File类

  java中的File类其实和文件并没有多大关系,它更像一个对文件路径描述的类。它即可以代表某个路径下的特定文件,也可以用来表示该路径的下的所有文件,所以我们不要被它的表象所迷惑。对文件的真正操作,还得需要I/O流的实现。

1.目录列表


  如果我们想查看某个目录下有那些文件和目录,我们可以使用File中提供的list方式来查看,这很像linux下的ls命令。

  查看E:/html文件夹下所有的php文件,执行的时候输入的参数为正则表达式

 package com.dy.xidian;

 import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern; public class DirList {
static File path = new File("E:/html");
public static void main(String[] args) {
String[] list;
// 获取整个目录列表
if (args.length == 0)
list = path.list();
else
list = path.list(new DirFilter(args[0]));
Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
for (String string : list) {
System.out.println(string);
}
}
} class DirFilter implements FilenameFilter {
private Pattern pattern;
public DirFilter(String regex) {
pattern = Pattern.compile(regex);
} public boolean accept(File dir, String name) {
// find匹配的是字符串的子序列,我们可以认为是不严格匹配
return pattern.matcher(name).find();
}
}

java中的File类

2.目录实用工具


  该工具有两个作用

  • 遍历所有目录及其子目录
  • 遍历目录下的文件以及其子目录下的文件
 package com.dy.xidian;

 import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern; import net.mindview.util.PPrint; public final class Diractory {
public static File[] local(File dir, final String regex) {
return dir.listFiles(new FilenameFilter() {
Pattern pattern = Pattern.compile(regex);
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(new File(name).getName()).matches();
}
});
} public static File[] local(String path, final String regex) {
return local(new File(path), regex);
} public static class TreeInfo implements Iterable<File> {
public List<File> files = new ArrayList<File>();
public List<File> dirs = new ArrayList<File>(); @Override
public Iterator<File> iterator() {
return files.iterator();
} void addAll(TreeInfo other) {
files.addAll(other.files);
dirs.addAll(other.dirs);
} public String toString() {
return "dirs: " + PPrint.pformat(dirs) + "\n\nfiles:"
+ PPrint.pformat(files);
}
} public static TreeInfo walk(String start, String regex) {
return recurseDirs(new File(start), regex);
} public static TreeInfo walk(File start, String regex) {
return recurseDirs(start, regex);
} public static TreeInfo walk(File start) {
return recurseDirs(start, ".*");
} public static TreeInfo walk(String start) {
return recurseDirs(new File(start), ".*");
} public static TreeInfo recurseDirs(File startDir, String regex) {
TreeInfo result = new TreeInfo();
for (File file : startDir.listFiles()) {
if (file.isDirectory()) {
result.dirs.add(file);
result.addAll(recurseDirs(file, regex)); //加入子目录信息
} else if (file.getName().matches(regex))
result.files.add(file);
}
return result;
} public static void main(String[] args) {
if (args.length == 0)
System.out.println(walk("."));
else
for (String arg : args) {
System.out.println(walk(arg));
}
}
}

  java中的File类

3.目录的检查及创建


  File的更倾向于对目录、文件属性的操作,比如路径,存在性,大小,修改时间、读/写权限等,对文件的内容并不关心。

  

 package com.dy.xidian;

 import java.io.File;

 public class MakeDirectories {
private static void usage() {
System.err.println("Usage: MakeDirectories path1...\n"
+ "Creates each path\n"
+ "Usage: MakeDirectories -d path1...\n" + "Delete each path\n"
+ "Usage: MakeDirectories -r path1 path2\n"
+ "Renames from path1 to path2");
System.exit(1);
} private static void fileData(File f) {
System.out.println("Absolute path: " + f.getAbsolutePath()
+ "\n Can read: " + f.canRead() + "\n Can write: "
+ f.canWrite() + "\n getName: " + f.getName()
+ "\n getParent: " + f.getParent() + "\n getPath: "
+ f.getPath() + "\n length: " + f.length()
+ "\n lastModified: " + f.lastModified());
if (f.isFile())
System.out.println("It is a file");
else if (f.isDirectory())
System.out.println("It is a directory");
} public static void main(String args[]) {
if (args.length < 1)
usage();
if (args[0].equals("-r")) {
if (args.length != 3)
usage();
//文件重命名,若文件名冲突,则命名函数执行失败
File old = new File(args[1]), rname = new File(args[2]);
old.renameTo(rname);
fileData(old);
fileData(rname);
return;
}
int count = 0;
boolean del = false;
if (args[0].equals("-d")) {
count++;
del = true;
}
count--;
while (++count < args.length) {
File f = new File(args[count]);
if (f.exists()) {
System.out.println(f + " existd");
if (del) {
System.out.println("deleting..." + f);
f.delete();
}
} else if (!del) {
f.mkdirs();
System.out.println("create " + f);
}
fileData(f);
}
}
}

  该代码能够进行目录/文件的创建,删除,重命名操作.

java中的File类的更多相关文章

  1. 详谈JAVA中的file类与IO流

    File类 位置于java.io包构造方法:File(String parent, String child)new file("d:\\","a.txt") ...

  2. &lbrack;原创&rsqb;Java中使用File类的list方法获取一定数量的文件:FilenameFilter接口的特殊用法

    前言:有时候我们可能会遇到这样一个问题:需要遍历一个包含极多文件的文件夹,首先想到的肯定是使用File.list()方法,该方法返回一个String[],但是如果文件达到几亿呢?这个时候我们就需要分批 ...

  3. Java中的File类,递归是什么?

    一.IO概述 当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作. 当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作. 因此我们把这种输入和输出动作称为 ...

  4. java中关于File类的细说

    File类是我们接触的比较多的类,当初学习是真是傻傻分不清啊.今天就总结一下file的一些比较不好区分的地方. 首先:当然就是构造方法 File f = new File("文件路径&quo ...

  5. java中关于File类的mkdirs&lpar;&rpar;和FIle&lpar;&rpar;构造方法在windows环境内网测试总结

    环境:环境是内网windows,传入路径的时候不带盘符,并且服务器的win10也不是超级管理员账户 关于File类的mkdirs()远程访问创建不了文件和路径的问题. 如果浏览器操作者是windows ...

  6. Java中使用File类删除文件夹和文件

    删除工具类: import java.io.File; public class DeleteAll{ public static void deleteAll(File file){ if(file ...

  7. Java学习笔记——File类之文件管理和读写操作、下载图片

    Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...

  8. JAVA中的File&period;separate&lpar;跨平台路径&rpar;

    转: JAVA中的File.separate(跨平台路径) 2016年03月27日 23:33:50 才不是本人 阅读数:1952   在Windows下的路径分隔符和Linux下的路径分隔符是不一样 ...

  9. java 中常用的类

    java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l  static double abs(double  a) 获取double 的绝对值 l  sta ...

随机推荐

  1. vue&period;js 1中父组件跳到子组件中并传参让子组件显示不同的内容

    父组件中的点击跳转: <ul class="insurance-entry clearfloat"> <li v-link="{name:'produc ...

  2. &amp&semi;nbsp&vert;&amp&semi;quot&vert;&amp&semi;amp&vert;&amp&semi;lt&vert;&amp&semi;gt等html字符转义

    提示:请直接按CTRL+F搜索您要查找的转义字符.    原文地址:http://write.blog.csdn.net/postedit/8817826 常用表: No. 文字表記 10進表記 16 ...

  3. eAccelerator介绍

    加速器 eAccelerator是一个*开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除. 它还有对脚本起优化作用,以加 ...

  4. SharePoint 2013 设置自己定义布局页

    在SharePoint中.我们常常须要自己定义登陆页面.错误页面.拒绝訪问等:不知道大家怎样操作,曾经自己常常在原来页面改或者跳转.事实上SharePoint为我们提供了PowerShell命令,来改 ...

  5. MFC半透明对话框

    int CTestDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDialog::OnCreate(lpCreateStruct) == -1) ...

  6. springboot~mybatis里localdatetime序列化问题

    问题起因 主要是使用mybatis作为ORM之后,返回的对象为Map,然后对于数据库的datetime,datestamp类型返回为时间戳而不是标准的时间,这个问题解决方案有两种,大叔分析一下: 在m ...

  7. &num;个人博客作业Week2——关于代码规范的讨论

    <1> 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 反驳:官僚制度在一定程度下维持了社会的和谐稳定,一个没有法律.没有拥有完善的管理*.完全崇尚 ...

  8. 【紫书】Trees on the level UVA - 122 动态建树及bfs

    题意:给你一些字符串,代表某个值被插入树中的位置.让你输出层序遍历. 题解:动态建树. 由于输入复杂,将输入封装成read_input.注意输入函数返回的情况 再将申请新节点封装成newnode(). ...

  9. 带你走进php大马的结构模块编写之路

    本文原创作者:Laimooc 第一部分:前沿综述 本次我主要写了[文件的创建].[文件的删除].[文件的上传].[目录浏览].[命令执行]小模块,以及[组合的目录浏览和文件删除功能]的模块: 实验环境 ...

  10. 大数据框架-spark

    相关详细说明:https://www.csdn.net/article/2015-07-10/2825184 RDD:弹性分布式数据集. Operation:Transformation 和Actio ...